Как подключить сертификат при использовании s SqlConnection
? От SqlConnection Connection String Parameter Keywords & Values, я знаю, что могу установить Encrypted
на true
, чтобы заставить (поощрять?) Использование SSL/TLS..Net SqlConnection, аутентификация сервера и привязка сертификата
Однако, чтобы соединить сертификат, я считаю, что нам нужно использовать ServerCertificateValidationCallback
от ServicePointManager
(образец кода, предложенный Arne Vajhøj для HTTP/HTTPS, был предложен ниже). Я не знаю, как провести проводку в PinCertificate
(от ServicePointManager
) до SqlConnection
.
ОБНОВЛЕНИЕ: Говоря с Арне Ваджхой на microsoft.public.dotnet.languages.csharp, кажется, что у него не может быть необходимого контроля над соединением. Vajhøj предложил ссылку на Encrypting Connections to 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;
}
Пример валидации сертификата в VB.NET: http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/ 5f5af31c-74f2-4147-8b70-e9e8ec03c76a. Должно быть достаточно легко конвертировать. –
В примере MSDN используются 'ServicePointManager' и' ServerCertificateValidationCallback' (вызывается 'MyCertValidationCb'). Его не отличается от образца, который я разместил. Я до сих пор не понимаю, как один из проводов 'ServerCertificateValidationCallback' в' SqlConnection'. – jww
http://support.microsoft.com/default.aspx?scid=276553 помогает ли это? – King