2012-01-01 18 views
6

एस SqlConnection का उपयोग करते समय प्रमाण पत्र पिन कैसे करता है? SqlConnection Connection String Parameter Keywords & Values से, मुझे पता है कि मैं एसएसएल/टीएलएस के बल को प्रोत्साहित करने के लिए Encryptedtrue पर सेट कर सकता हूं।.Net SqlConnection, सर्वर प्रमाणीकरण, और प्रमाणपत्र पिनिंग

हालांकि, प्रमाण पत्र पिन करने के लिए, मुझे विश्वास है कि हमें ServicePointManager से ServerCertificateValidationCallback का उपयोग करने की आवश्यकता है (नीचे नमूना कोड HTTP/HTTPS के लिए अर्ने वजोज द्वारा प्रदान किया गया था)। मैं स्पष्ट नहीं हूं कि PinCertificate (ServicePointManager से) SqlConnection में तार कैसे करें।

अपडेट: माइक्रोसॉफ्ट.public.dotnet.languages.csharp पर आर्ने वाजोज के साथ बात करते हुए, ऐसा लगता है कि कनेक्शन पर वांछित नियंत्रण होना संभव नहीं है। वजोज ने 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; 
} 
+0

VB.NET में प्रमाण पत्र सत्यापन का एक उदाहरण: http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/ 5f5af31c-74f2-4147-8b70-e9e8ec03c76a। कन्वर्ट करने के लिए काफी आसान होना चाहिए। –

+0

एमएसडीएन उदाहरण 'सर्विसपॉइंट प्रबंधक' और 'सर्वर प्रमाणपत्र प्रमाणन कॉलबैक' का उपयोग करता है ('MyCertValidationCb' को कॉल करना)। मैंने पोस्ट किए गए नमूने से अलग नहीं है। मैं अभी भी स्पष्ट नहीं हूं कि कोई 'SqlConnection' में' सर्वर प्रमाणपत्र प्रमाणन कॉलबैक 'कैसे चलाता है। – jww

+0

http://support.microsoft.com/default.aspx?scid=276553 यह सहायता करता है? – King

उत्तर

0

कैसे की तरह कुछ के बारे में:

System.Net.ServicePointManager.ServerCertificateValidationCallback = New RemoteCertificateValidationCallback(AddressOf ValidateCertificate) 

Private Function ValidateCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As SslPolicyErrors) As Boolean 
    'Return True to force the certificate to be accepted. 
    Return True 
End Function 
संबंधित मुद्दे