Моно проблемы с кертом и мозрутами - PullRequest
11 голосов
/ 20 июля 2010

Я использую эту команду на моей моно ВМ

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

Ответы [ 2 ]

3 голосов
/ 08 ноября 2010

Продолжение об ошибке 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 голосов
/ 24 июля 2010
  1. Установка Mono по умолчанию никому не доверяет!
  2. mozroots загрузит и импортирует доверенные корневые сертификаты из Mozilla LXR .
  3. Прочтите Часто задаваемые вопросы по безопасности Mono

EDIT:

  • Попробуйте последнюю версию пакетов Mono из здесь
  • Если это не сработает, попробуйте версию магистрали SVN здесь
  • Из Bug 606002 Гонсало Паниагуа Хавьер предложил: «Чтобы пойти дальше, нужно добавить свой ServerCertificateValidationCallback в ServicePointManager и игнорировать ошибки с этим кодом».
  • У меня мало опыта в этой области, поэтому я предлагаю связаться с ним для дальнейшей помощи, может быть, он может помочь. Его адрес электронной почты: gonzalo@gonzalo.name ( его блог )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...