Как закрепить сертификат при использовании s SqlConnection
? Из SqlConnection Строка подключения Ключевые слова и значения параметра , я знаю, что могу установить Encrypted
в true
для принудительного (поощрения?) Использования SSL / TLS.
Однако, чтобы закрепить сертификат, я считаю, что нам нужно использовать ServerCertificateValidationCallback
из ServicePointManager
(пример кода ниже был предложен Арне Ваджхой для HTTP / HTTPS). Мне не понятно, как подключить PinCertificate
(от ServicePointManager
) к SqlConnection
.
ОБНОВЛЕНИЕ: Разговаривая с Арне Ваджхой на microsoft.public.dotnet.languages.csharp, оказалось, что невозможно установить желаемый контроль над соединением. Ваджхой предложил ссылку на Шифрование соединений с SQL Server .
public static void Main(string[] args)
{
ServicePointManager.ServerCertificateValidationCallback = PinCertificate;
WebRequest wr = WebRequest.Create("https://www.google.com/");
wr.GetResponse();
}
public static bool PinCertificate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{
byte[] chash = certificate.GetCertHash();
StringBuilder sb = new StringBuilder(chash.Length * 2);
foreach (byte b in chash)
sb.AppendFormat("{0:X2}", b);
// Verify against known SHA1 thumb print of the certificate
String hash = sb.ToString();
if (hash != "C1956DC8A7DFB2A5A56934DA09778E3A11023358")
return false;
return true;
}