2013-06-09 2 views
5

내 질문은 this 질문과 유사합니다.오프라인 해지 모드

로컬 CRL 만 사용하여 해지 목록을 확인하려고합니다.

var chainMachine = new X509Chain(true); 
      chainMachine.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain; 
      chainMachine.ChainPolicy.UrlRetrievalTimeout = TimeSpan.FromSeconds(30); 
      chainMachine.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag; 
      chainMachine.ChainPolicy.VerificationTime = DateTime.Now; 
      chainMachine.ChainPolicy.RevocationMode = X509RevocationMode.Offline; 

그러나 나는 다음과 같은 오류를 얻을 : 다음 매개 변수를 내가 X509Chain.Build()를 사용하고

해지 기능 해지를 확인할 수없는 RevocationStatusUnknown =>
  1. 인증서.
  2. OfflineRevocation => 해지 서버가 오프라인에서 이므로 해지 기능이 인증서의 해지를 확인할 수 없습니다.

이상한 것은 문제는를 해결, 나는 온라인 해지 목록을 확인하려고하면 (결과로 CRL이 업데이트됩니다)이다. 캐시에 어떤 것이 있으면 더 이상 문제를 재현 할 수 없습니다.

오류 메시지가 잘못되었을 것으로 생각하고 실제로 발생하는 것은 캐시가 비어있을 때이 메시지가 나타나는 몇 가지 예외가 있다는 것입니다. 또 다른 옵션은 어쩌면 캐시가 언젠가 업데이트되었는지 여부를 알려주는 플래그가 있고 업데이트 된 적이없는 경우 외부 서버에서 정보를 얻으려는 것입니다.

이 문제?

+0

또한 같은 동작을보고 있어요 .서버가 오프라인 상태라고 말하면서 해지를 확인할 수 없다고 말합니다. 이것은 자체 서명 인증서에 대해서는 발생하지 않는 것 같습니다. – Mark

답변

1

X509RevocationMode.None : CRL 또는 OCSP를 확인하지 마십시오.

X509RevocationMode.Offline : CRL이 캐시되고 유효하면 CRL을 사용하여 해지하십시오. 그렇지 않으면 인증서의 해지를 검사해야하는 경우 (EntireChain/ExcludeRoot/EndCertificateOnly에 따라 다름) OfflineVerification | RevocationStatusUnknown을보고합니다. (OCSP 응답은 nextUpdate 값이 제안하면 캐싱 될 수도 있지만, 그렇지 않은 경우 확실하지 않습니다).

X509RevocationMode.Online : OCSP 끝 점이 인증서에 설명되어 있으면 OCSP 검사를 수행하십시오. OCSP가 결정적인 답을 얻지 못하고 CRL 배포 지점이 정의 된 경우 캐시에서 CRL을 확인합니다. 그것이 유효하면 해지의 근거로 사용하십시오. 그렇지 않으면 CRL을 다운로드하고 캐시하십시오. 해지 상태를 찾기위한 모든 시도가 실패하면 RevocationStatusUnknown을 설정하십시오.

오프라인 모드는 CRL 만료로 까다 롭습니다. 한 시간 전에 온라인 요청을 했더라도 오프라인이 지금 작동한다는 것을 의미하지는 않습니다. 내가 생각할 수있는 최선의 방법은 행복한 길을 빠르게 만드는 것입니다. RevocationStatusUnknown 또는 OfflineRevocation 이외의 오류가 발생하면 체인이 실패한 것으로 간주하지만 그 중 하나는 온라인 모드로 다시 요청합니다.

(http://referencesource.microsoft.com를 통해 확인할 수있는 바와 같이, 오프라인 약으로 드문 드문 https://msdn.microsoft.com/en-us/library/windows/desktop/aa376078(v=vs.85).aspx에 설명되어 있습니다 CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY에 해당하지만, 아마도 "확인 캐시 전용"부분은 더 계몽)

관련 문제