Я получаю следующую ошибку во время запроса веб-службы к удаленной веб-службе:
Не удалось установить доверительные отношения для безопасного канала SSL / TLS. ---> System.Security.Authentication.AuthenticationException: удаленный сертификат недействителен в соответствии с процедурой проверки.
Есть ли способ игнорировать эту ошибку и продолжить?
Кажется, удаленный сертификат не подписан.
Сайт, к которому я подключаюсь, www.czebox.cz
- так что не стесняйтесь посещать сайт, и обратите внимание, что даже браузеры выдают исключения безопасности.
Разрешение всех сертификатов очень эффективно, но это также может быть опасно. Если вы хотите разрешить только действительные сертификаты плюс некоторые определенные сертификаты, это можно сделать следующим образом.
.Net core:
.NET Framework:
Обновить:
Как получить
cert.GetCertHashString()
значение в Chrome:Нажмите на
Secure
илиNot Secure
в адресной строке.Затем нажмите Сертификат -> Детали -> Отпечаток и скопируйте значение. Не забудьте сделать
cert.GetCertHashString().ToLower()
.источник
Hash String
от сертификата?cert.GetCertHashString()
изImmediate window
или проверки сертификатаThumbprint
в браузере илиMMC
если он установлен локально.Метод IgnoreBadCertificates:
источник
Причина его сбоя не в том, что он не подписан, а в том, что ваш клиент не доверяет корневому сертификату. Вместо того чтобы отключать проверку SSL, альтернативным подходом было бы добавить сертификат корневого ЦС в список ЦС, которым доверяет ваше приложение.
Это корневой сертификат CA, которому ваше приложение в настоящее время не доверяет:
Вы можете расшифровать и просмотреть этот сертификат, используя
этот декодер сертификатов или другой декодер сертификатов
источник
Отключить проверку SSL-сертификата в конфигурации клиента.
источник
Этот код работал для меня. Мне пришлось добавить TLS2, потому что это то, что использовал интересующий меня URL.
источник
Обойти SSL-сертификат ....
источник
Если вы используете сокеты напрямую и аутентифицируетесь как клиент, метод обратного вызова Service Point Manager не будет работать. Вот что сработало для меня. ПОЖАЛУЙСТА, ИСПОЛЬЗУЙТЕ ТОЛЬКО ДЛЯ ТЕСТИРОВАНИЯ .
Ключевым моментом здесь является предоставление обратного вызова для проверки удаленного сертификата прямо в конструкторе потока SSL.
источник
Для дальнейшего расширения поста BIGNUM - в идеале вам нужно решение, которое будет имитировать условия, которые вы увидите в рабочей среде, и изменение кода не сделает этого и может быть опасным, если вы забудете вынуть код перед его развертыванием.
Вам понадобится какой-либо самозаверяющий сертификат. Если вы знаете, что делаете, вы можете использовать опубликованный двоичный файл BIGNUM, но если нет, вы можете отправиться на поиски сертификата. Если вы используете IIS Express, у вас уже будет один из них, вам просто нужно его найти. Откройте Firefox или любой другой браузер, который вам нравится, и перейдите на сайт разработчика. Вы должны иметь возможность просматривать информацию о сертификате в строке URL, и в зависимости от вашего браузера вы сможете экспортировать сертификат в файл.
Затем откройте MMC.exe и добавьте оснастку «Сертификат». Импортируйте файл сертификата в хранилище доверенных корневых центров сертификации, и это все, что вам нужно. Важно убедиться, что он входит в этот магазин, а не в какой-нибудь другой магазин, например «Личный». Если вы не знакомы с MMC или сертификатами, существует множество сайтов с информацией о том, как это сделать.
Теперь ваш компьютер в целом будет безоговорочно доверять любым сертификатам, которые он сам сгенерировал, и вам не нужно будет добавлять код для этой особой обработки. Когда вы перейдете к производству, он продолжит работать, если на нем установлен правильный действительный сертификат. Не делайте этого на рабочем сервере - это было бы плохо, и это не будет работать для других клиентов, кроме тех, которые находятся на самом сервере.
источник
Это работает для .Net Core. Позвоните своему клиенту Soap:
источник