CRL (인증서 해지 목록) 만료 날짜를 모니터링하는 프로그램을 작성하고 싶습니다. 따라서, 나는 CRL 파일에서 다음과 같은 속성을 읽어 싶습니다 1) 효력 발생 일 2) 다음 업데이트 3) 다음 CRL이CRL을 사용하여 CRL 파일의 속성 추출 #
가 어떻게 내 작업을 수행 할 수 게시? X509Certificate2, X509Chain, x509RevocationMode 등의 유형을 찾을 수 밖에 없었습니다.
CRL (인증서 해지 목록) 만료 날짜를 모니터링하는 프로그램을 작성하고 싶습니다. 따라서, 나는 CRL 파일에서 다음과 같은 속성을 읽어 싶습니다 1) 효력 발생 일 2) 다음 업데이트 3) 다음 CRL이CRL을 사용하여 CRL 파일의 속성 추출 #
가 어떻게 내 작업을 수행 할 수 게시? X509Certificate2, X509Chain, x509RevocationMode 등의 유형을 찾을 수 밖에 없었습니다.
정보를 얻기 위해 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;
}
참조 하나 개의 인증 파일을 처리하려면 :
편집 :
당신은 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);
}
}
이 코드는 CRL File에서 작동하지 않습니다. 이는 x509 인증서와 다릅니다. NotBefore는 인증서가 유효 할 때 암시되는 인증서 내의 속성이며 NotAfter는 인증서가 만료 될 때를 의미합니다. – StackNewbie
게시물을 편집하고 CRL 처리 코드를 추가합니다. 나는 도우미가 되길 바랍니다. –
대단히 감사합니다! 이 라이브러리는 내가 필요한 것입니다. – StackNewbie
, 나는 네이티브 .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에 의존합니다.
답변 해 주셔서 감사합니다. 귀하의 답변이 도움이된다는 것을 발견했습니다. 귀하의 코드를 살펴 보겠습니다. – StackNewbie
이미 어떤 코드를 사용해 보셨습니까? – FishStix
msdn을 통해 암호화에 대한 문서를 살펴 보았습니다. CRL 파일을 구문 분석하는 것에 대해 아무 것도 없습니다. – StackNewbie