Моно проблемы с сертификатом и mroroots
Я использую эту команду для своей моно VM
sudo mozroots --import --sync
Кажется, что получает сертификат от этого сайта.
Затем я пытаюсь подключиться к моему сайту ssl, и я получаю исключение, что сертификат недействителен. Я использую firefox и вижу, что сертификат был выпущен в 2010 году. Я посмотрел на этот файл и вижу, что последний раз его обновляли 2009-05-21 12:50
При использовании firefox на одном компьютере я могу перейти к тому же URL-адресу, к которому я пытаюсь подключиться, и я не получаю никаких проблем ssl. (никаких предупреждений и просьбы добавить его в исключение).
Я запутался здесь. Как обновить моно, чтобы использовать последние сертификаты?
-edit- Я проверил, кто подписал сертификат на сайте, который я хочу посетить, и их имя указано в certdata. Интересно, почему моно говорит, что сертификат недействителен.
Я попытался написать это, и я нажал "да" на 3-й сертификат, который попросил меня импортировать
certmgr -ssl https://www.site.com/users/login --machine
Я снова запустил приложение и получил эту ошибку. Код ошибки 0xffffffff80092012 я нашел это.
Похож на исправленную ошибку, которая не применяется к 2.6.4. Или я могу сделать это неправильно. Я устанавливаю ServerCertificateValidationCallback в свою собственную вещь и возвращаю true для этого приложения как исправление для моно.
System.Net.WebException: ошибка при получении поток ответа (запись: аутентификация или дешифрование не удалось.): SendFailure --- > System.IO.IOException: аутентификация или дешифрование не смогли. --- > Mono.Security.Protocol.Tls.TlsException: Недействительный сертификат, полученный от сервер. Код ошибки: 0xffffffff80092012
Ответы
Ответ 1
Наблюдение за ошибкой 606002 - вот код для игнорирования указанного кода ошибки. Вызовите его один раз при инициализации
ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) {
if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors) {
foreach (X509ChainStatus status in chain.ChainStatus) {
if (status.Status != X509ChainStatusFlags.RevocationStatusUnknown) {
return false;
}
}
return true;
}
return false;
};
Ответ 2
EDIT:
- Попробуйте последнюю версию пакетов Mono от здесь
- Если это не работает, попробуйте версию соединительной линии SVN здесь
- Из Ошибка 606002, Гонсало Паниагуа Хавьер предложил: "Чтобы добавить свой ServerCertificateValidationCallback в ServicePointManager и проигнорировать ошибки с помощью этот код."
- У меня мало опыта в этой области, поэтому я предлагаю связаться с ним для дальнейшей помощи, может быть, он может помочь. Он по электронной почте [email protected](его блог)