При отправке HTTPS-запроса на удаленный веб-сервер я использую WebRequest, который устанавливает безопасное соединение с удаленным веб-сервером. Во время разработки я использую самоподписанный сертификат на сервере, и WebRequest не может установить безопасное соединение, так как сертификат недействителен, что является ожидаемым поведением.
Я нашел этот код, который "проверяет" проверку сертификата, активируется путем вызова метода SetCertificatePolicy()
в следующем коде.
public static void SetCertificatePolicy()
{
ServicePointManager.ServerCertificateValidationCallback
+= RemoteCertificateValidate;
}
/// <summary>
/// Remotes the certificate validate.
/// </summary>
private static bool RemoteCertificateValidate(
object sender, X509Certificate cert,
X509Chain chain, SslPolicyErrors error)
{
// trust any certificate!!!
System.Console.WriteLine("Warning, trust any certificate");
return true;
}
Мне интересно, можно ли сделать специальные проверки для удаленного сертификата SSL (например, с использованием приведенного выше кода), чтобы я мог проверить, что удаленный веб-сервер использует действительный сертификат SSL, а не только какой-либо действительный сертификат, но именно тот, который я хочу? Например, я хочу убедиться, что я разговариваю с сайтом www.someplace.com, сертификат выдан ACME Inc, с отпечатком пальца 00:11:22: .....
Что такое подход «наилучшей практики» для этого сценария?
Спасибо!