#c# #asp.net #.net #asp.net-core #.net-core
Вопрос:
В классе .NET SslStream при вызове метода «AuthenticateAsClient» обязательно необходимо передать «адресную базу», на основе которой выполняется проверка удаленных сертификатов.
Если для targetHost установлено значение»*», то проверка удаленных сертификатов не выполняется, как указано в ссылке msdn
Теперь есть способ, которым мы устанавливаем «targethost’у» на допустимое значение и все еще хотим отключить проверку удаленного сертификата.
Комментарии:
1. Со стороны сервера в документации по классу приведен пример кода. Проверьте класс SslStream
2. Спасибо. Но это на стороне клиента, поэтому я использовал AuthenticateAsClient
3.
AuthenticateAsClient
Имеет перегрузку AuthenticateAsClient(SslClientAuthenticationOptions) . Просматривая документациюRemoteCertificateValidationCallback
SslClientAuthenticationOptions, вы можете использовать ее для игнорирования удаленных неправильных/недействительных сертификатов.4. @Cleptus Спасибо тебе
5. @Cleptus Спасибо за ваш совет, сэр, и не могли бы вы, пожалуйста, опубликовать его в качестве ответа, чтобы закончить этот билет?
Ответ №1:
Вам необходимо использовать обратный вызов проверки сертификата, чтобы вы могли решить, когда принимать или игнорировать удаленный сертификат, в том случае, если вы хотите игнорировать удаленный сертификат и принимать его независимо от ошибок.
С SSLStream
помощью этого есть два способа достичь этого:
- Используйте перегрузку конструктора
RemoteCertificateValidationCallback
с аргументом. У вас есть пример кода в официальной документации RemoteCertificateValidationCallback - Используйте перегрузку AuthenticateAsClient(SslClientAuthenticationOptions), у которой есть
SslClientAuthenticationOptions
аргумент соRemoteCertificateValidationCallback
свойством, которое можно использовать для игнорирования удаленных неправильных/недействительных сертификатов.
Код пользовательской функции обратного вызова будет похож на этот:
public static bool ValidateServerCertificate(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
// We want to ignore remote certificate errors
// Warning: In a normal scenario we would check the sslPolicyErrors argument instead.
return true;
}