Как обойти ошибку проверки доверия SSL/TLS в клиентском коде С#?

Я написал клиент С# для отправки данных в многостраничной форме на сервер в Интернете. При тестировании моего кода я начал получать исключения следующим образом:

{System.Net.WebException: основное соединение было закрыто: не удалось установить доверительные отношения для безопасного канала SSL/TLS. ---> System.Security.Authentication.AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.

Я попытался получить доступ к веб-ресурсу с помощью своего браузера и понял, что существует проблема с SSL-сертификатом веб-сайта. Сайт принадлежит третьей стороне, и я не знаю, когда они исправят эту проблему.

Можно ли как-нибудь проигнорировать это исключение безопасности и внести некоторые изменения в свой код, чтобы он продолжал работать?

Я использую класс HttpWebRequest для выполнения http-сообщений.


person Krishnamurthy    schedule 22.06.2009    source источник


Ответы (1)


На самом грубом уровне:

ServicePointManager.ServerCertificateValidationCallback = delegate
     { return true; }; // WARNING: accepts all SSL certificates

Однако вам следует быть немного более подробным, взглянув на сертификат/цепочка немного.

person Marc Gravell    schedule 22.06.2009
comment
Да, я использовал это несколько раз. Если вы используете списки задач, обязательно укажите TODO или HACK в своем комментарии. Или добавьте предупреждение в свой список ключевых слов. - person maxwellb; 23.06.2009