Моно проблемы с сертификатом и 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](его блог)