2014-02-14 2 views
0

EWS (Exchange 웹 서비스)를 사용하여 메일을 이동시키는 응용 프로그램을 만들고 있습니다. 인증서 유효성 검사를 거치지 않고 응용 프로그램을 실행할 수 있습니다. 나는 인증서 유효성 검사를 우회에이 코드를 사용 :클라이언트의 인증서 유효성 검사

ServicePointManager.ServerCertificateValidationCallback = 
    delegate(object s, X509Certificate certificate, 
      X509Chain chain, SslPolicyErrors sslPolicyErrors) 
    { 
     return true; 
    }; 

인증서를 발견하고 인증서를 확인하는 매우 도움이되었다 내가 this post 다음 인증서를 확인합니다.

동안 ValidateCert 방법은 예외를 던지고 해당 게시물을 사용

chain.ChainPolicy.RevocationMode = X509RevocationMode.Online | X509RevocationMode.Offline; 

는 예외입니다 : 내가 비주얼 스튜디오 2013 을 사용하고

System.ArgumentException: Illegal enum value: value. 
at 
System.Security.Cryptography.X509Certificates.X509ChainPolicy. 
      set_RevocationMode(X509RevocationMode value) 

내가 할 수있는 다른 방법에 열려입니다 동일한 작업.

+1

예가 잘못되었거나 더 이상 사용되지 않는 것 같습니다. X509RevocationMode enum을 Flags로 사용할 수 없으며 세 값 중 하나를 선택하십시오. –

+0

이 물건을 어떻게 든 할 수 있겠습니까? –

+0

'X509RevocationMode.Online | X509RevocationMode.Offline' - 둘 중 하나를 선택하십시오. 'X509RevocationMode.Online'을 선택하면 큰 CRL을 다운로드하거나 누락 된 CRL을 다운로드하는 동안 애플리케이션을 DoS 할 수 있습니다. – jww

답변

0

당신은 선택해야합니다 어느 Online 또는 Offline : - Online가 : 항상 취소 확인하기 위해 CRL 목록을 얻을 수있는 인증서에 지정된 CDP 또는 OCSP URL을 연결하려고 - Offline을 : 기존의 캐시 된 복사본을 사용하려고합니다 CRL

첫 번째 옵션은 CDP 또는 OCSP 서버가 응답하지 않는 경우, 연결 문제가있는 경우 등, 속도가 느릴 수 있습니다. 이 문제가 영구적이면 실패 할 수도 있습니다.

대부분의 경우 두 번째 옵션을 사용하는 것이 좋습니다. CRL의 캐시 된 복사본을 사용하지 않는 유일한 이유는 최근의 인증서 해지가 있었으며 CRL에 방금 게시되었음을 나타냅니다. 게다가 CRL에는 만료 날짜가 있기 때문에 만료되면 새 복사본을 가져와야합니다.

오프라인 옵션으로 프로세스를 시작하기 전에 CRL 캐시를 지울 수도 있습니다. Google it : 다양한 옵션이 있습니다. certutil.exe을 사용해야합니다.

관련 문제