2016-07-19 3 views
0

CRL (인증서 해지 목록) 만료 날짜를 모니터링하는 프로그램을 작성하고 싶습니다. 따라서, 나는 CRL 파일에서 다음과 같은 속성을 읽어 싶습니다 1) 효력 발생 일 2) 다음 업데이트 3) 다음 CRL이CRL을 사용하여 CRL 파일의 속성 추출 #

가 어떻게 내 작업을 수행 할 수 게시? X509Certificate2, X509Chain, x509RevocationMode 등의 유형을 찾을 수 밖에 없었습니다.

+0

이미 어떤 코드를 사용해 보셨습니까? – FishStix

+0

msdn을 통해 암호화에 대한 문서를 살펴 보았습니다. CRL 파일을 구문 분석하는 것에 대해 아무 것도 없습니다. – StackNewbie

답변

2

정보를 얻기 위해 X509Certificate2 클래스를 사용할 수 있습니다.

예 :

X509Certificate2 x509 = new X509Certificate2(); 
byte[] rawData = ReadFile(fname); 
x509.Import(rawData); 
var validDate= x509 . NotBefore;  
var expireDate = x509.NotAfter; 


//Reads a file. 
internal static byte[] ReadFile (string fileName) 
{ 
    FileStream f = new FileStream(fileName, FileMode.Open, FileAccess.Read); 
    int size = (int)f.Length; 
    byte[] data = new byte[size]; 
    size = f.Read(data, 0, size); 
    f.Close(); 
    return data; 
} 

참조 하나 개의 인증 파일을 처리하려면 :

https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2(v=vs.110).aspx

편집 :

당신은 CRL을 처리 할 BouncyCastle.Crypto 라이브러리를 사용할 수 있습니다. 질문에 대한 답변,하지만

Install-Package BouncyCastle 


    //reference library BouncyCastle.Crypto 
    //http://www.bouncycastle.org/csharp/ 
    //Load CRL file and access its properties 
    public void GetCrlInfo(string fileName, Org.BouncyCastle.Math.BigInteger serialNumber, Org.BouncyCastle.X509.X509Certificate cert) 
    { 
     try 
     { 
      byte[] buf = ReadFile(fileName); 
      X509CrlParser xx = new X509CrlParser(); 
      X509Crl ss = xx.ReadCrl(buf); 
      var nextupdate = ss.NextUpdate; 
      var isRevoked = ss.IsRevoked(cert); 
      Console.WriteLine("{0} {1}",nextupdate,isRevoked); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine(ex.Message); 
     } 
    } 
+0

이 코드는 CRL File에서 작동하지 않습니다. 이는 x509 인증서와 다릅니다. NotBefore는 인증서가 유효 할 때 암시되는 인증서 내의 속성이며 NotAfter는 인증서가 만료 될 때를 의미합니다. – StackNewbie

+0

게시물을 편집하고 CRL 처리 코드를 추가합니다. 나는 도우미가 되길 바랍니다. –

+0

대단히 감사합니다! 이 라이브러리는 내가 필요한 것입니다. – StackNewbie

0

, 나는 네이티브 .NET 프레임 워크를 확장 또 다른 좋은 열려있는 프로젝트가 있음을 추가합니다 : nuget 패키지를 라이브러리를 다운로드하고 BouncyCastle.Crypto.dll 참조하거나 취임시키다 닷넷에서 누락 암호화 개체 작업 : CRL에 관해서 https://github.com/Crypt32/pkix.net

, 나는 X509Certificate2 내장 유사한 방법에 X509CRL2 클래스를 개발 : X509CRL2 Class합니다. 사용법은 매우 간단합니다 :

// reference System.Security.Cryptography.X509Certificates namespace 
var crl = new X509CRL2(@"C:\temp\crlfile.crl"); 
// Effective date: 
var effective = crl.ThisUpdate; 
// next update: 
var nextupdate = crl.NextUpdate; 
// next publish: 
var nextPublishExtension = crl.Extensions["1.3.6.1.4.1.311.21.4"]; 
if (nextPublishExtension != null) { nextPublishExtension.Format(1); } 

저는 순수 바이너리, Base64 또는 16 진수를 포함하여 여러 형식의 CRL 파일을 지원합니다.

이 클래스를 사용하면 CRL 속성을 읽을 수있을뿐만 아니라 버전 2 CRL을 생성 할 수 있습니다.

참고 : pkix.net 라이브러리는 ASN 구조를 구문 분석하는 데 사용되는 다른 열린 프로젝트 https://github.com/Crypt32/Asn1DerParser.NET에 의존합니다.

+0

답변 해 주셔서 감사합니다. 귀하의 답변이 도움이된다는 것을 발견했습니다. 귀하의 코드를 살펴 보겠습니다. – StackNewbie