2013-01-18 2 views
1

SslStream.AuthenticateAsClient에 "장시간 (~ 15 초)"문제가 있습니다. 이는 알려진 문제점이며이 내용은 MSDN blog post에 설명되어 있습니다.루트 CA 인증서를 얻고 설치하는 방법

그것은이 의도적으로 설계된 동작입니다, 요약하면 두 가지 가능한 솔루션

을 제공합니다. 옵션은 다음과 같습니다. 1) 신뢰할 수있는 루트 CA 인증서 목록을 보려면 인터넷으로 이동할 필요가 없도록 루트 CA 인증서를 로컬에 설치하십시오. 2) GPO를 통해 자동 루트 인증서 업데이트 기능을 사용하지 않도록 설정하면 어떤 경우에도 인터넷에 가지 않습니다.

이 나는 ​​옵션 2는 보안 관점에서 좋은 생각이 아니다 말했다, 그래서 옵션 1

문제는 내가 어떻게 루트 CA 인증서를 얻는 단서가 없다입니다을 할 필요가 있었어요. 일단 설치하면 certutil을 사용하여 설치하는 방법을 알 수 있습니다.

어떻게 내가 루트 CA 인증서를받을 수 있습니까 :

나는

private static bool CertificateValidationCallback(
      object oSender, 
      X509Certificate oCertificate, 
      X509Chain oChain, 
      SslPolicyErrors oSslPolicyErrors) 
     { 

     } 

그래서 나는이 내 질문 (들) 생각이 함수 내 실행을 중단 할 수 있습니까? 정보를 얻으려면 어떤 정보가 필요합니까? 이 정보는 어디에서 입수 할 수 있습니까?

답변

0

기관 정보 X509 표준의 액세스 확장에는 루트 CA 인증서의 위치 정보 (URL)가 포함되지만 선택 필드입니다.

var cert = new X509Certificate2(certData); 
var authInfoExtnsions = from ext in cert.Extensions.Cast<X509Extension>() 
         where ext.Oid.Value == "1.3.6.1.5.5.7.1.1" 
         select ext; 
foreach (var authInfoExtnsion in authInfoExtnsions) 
{ 
    Console.WriteLine(Encoding.UTF8.GetString(authInfoExtnsion.RawData)); 
} 

authInfoExtnsion.RawData

http://tools.ietf.org/html/rfc5280#section-4.2.2.1

은 복잡한 ASN.1 구조입니다 (있는 당신이 X509 표준의 세부 사항을 찾을 수 있습니다)이 코드는 당신에게 URL 루트의 CA 인증서를 제공하지 않습니다. 구문 분석하고 URL을 가져와야합니다. 내가 말했듯이 기관 정보 액세스는 선택적인 확장이지만, 루트 칼슘 인증의 URL을 콘솔에서 읽을 수 있음을 알 수 있습니다.

관련 문제