2012-01-01 3 views
6

SqlConnection을 사용할 때 인증서를 어떻게 고정합니까? SqlConnection Connection String Parameter Keywords & Values에서 Encryptedtrue으로 설정하여 SSL/TLS 사용을 권장 할 수 있습니다..Net SqlConnection, 서버 인증 및 인증서 고정

그러나 인증서를 확보하려면 ServicePointManager에서 ServerCertificateValidationCallback을 사용해야한다고 생각합니다. 아래 샘플 코드는 Arne Vajhøj에서 HTTP/HTTPS 용으로 제공 한 것입니다. PinCertificate (ServicePointManager)에서 SqlConnection으로 연결하는 방법이 명확하지 않습니다.

업데이트 : microsoft.public.dotnet.languages.csharp의 Arne Vajhøj와 대화하여 원하는 연결을 제어 할 수없는 것처럼 보입니다. 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; 
} 
+0

VB.NET에서 인증서 유효성 검사의 예 : http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/ 5f5af31c-74f2-4147-8b70-e9e8ec03c76a. 전환하기 쉬워야합니다. –

+0

MSDN 예제는'ServicePointManager'와'ServerCertificateValidationCallback' ('MyCertValidationCb' 호출)을 사용합니다. 그 샘플은 제가 게시 한 샘플과 다릅니다. 나는 아직도'ServerCertificateValidationCallback'을'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