Làm cách nào để ghim chứng chỉ khi sử dụng s SqlConnection
? Từ SqlConnection Connection String Parameter Keywords & Values, tôi biết tôi có thể đặt Encrypted
thành true
để buộc (khuyến khích?) Sử dụng SSL/TLS..Net SqlConnection, Xác thực Máy chủ và Ghim Chứng chỉ
Tuy nhiên, để ghim chứng chỉ, tôi tin rằng chúng tôi cần sử dụng ServerCertificateValidationCallback
từ ServicePointManager
(mã mẫu bên dưới được cung cấp bởi Arne Vajhøj cho HTTP/HTTPS). Tôi không rõ cách liên kết theo số điện thoại PinCertificate
(từ ServicePointManager
) đến SqlConnection
.
CẬP NHẬT: Nói chuyện với Arne Vajhøj trên microsoft.public.dotnet.languages.csharp, có vẻ như không thể kiểm soát kết nối mong muốn. Vajhøj cung cấp liên kết đến 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;
}
Một ví dụ về xác nhận chứng chỉ trong VB.NET: http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/ 5f5af31c-74f2-4147-8b70-e9e8ec03c76a. Nên đủ dễ dàng để chuyển đổi. –
Ví dụ MSDN sử dụng 'ServicePointManager' và' ServerCertificateValidationCallback' (gọi 'MyCertValidationCb'). Nó không khác với mẫu tôi đã đăng. Tôi vẫn chưa rõ ràng về cách một dây 'ServerCertificateValidationCallback' thành một' SqlConnection'. – jww
http://support.microsoft.com/default.aspx?scid=276553 sự trợ giúp này có hữu ích không? – King