我想編寫一個監視CRL(證書撤銷列表)到期日期的程序。 因此,我想閱讀從CRL文件中的以下屬性: 1)生效日期 2)下次更新 3)接下來CRL發佈使用C#從CRL文件中提取屬性
如何可以完成我的任務? 我只設法找到X509Certificate2,X509Chain,x509RevocationMode等類型。
我想編寫一個監視CRL(證書撤銷列表)到期日期的程序。 因此,我想閱讀從CRL文件中的以下屬性: 1)生效日期 2)下次更新 3)接下來CRL發佈使用C#從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;
}
參考:
編輯:
可以使用BouncyCastle.Crypto庫來處理CRL。 下載庫,並引用BouncyCastle.Crypto.dll 或安設的NuGet包:
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.It與x509證書不同。 NotBefore是證書內的屬性,暗示證書何時生效,NotAfter暗示證書何時到期。 – StackNewbie
我編輯帖子並添加處理CRL的代碼。我希望成爲幫手。 –
非常感謝!這個庫正是我所需要的。 – StackNewbie
雖然,該問題的答案,我想補充一點,還有一個擴展本地的.NET Framework到另一個良好的開放項目與缺少在.NET加密對象的工作:https://github.com/Crypt32/pkix.net
在問候CRL,我開發了一個X509CRL2
類以類似的方式,以內置X509Certificate2
: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); }
我支持多種格式的CRL文件,包括純二進制,Base64甚至十六進制格式。
通過使用此類,您不僅可以讀取CRL屬性,還可以生成版本2 CRL。
注意:pkix.net庫依賴於我的另一個打開的項目https://github.com/Crypt32/Asn1DerParser.NET,它用於解析ASN結構。
感謝您的回答,我發現您的答案是有益的。我會考慮使用你的代碼。 – StackNewbie
你已經試過了什麼代碼? – FishStix
我曾嘗試通過msdn查看有關加密的文檔。 沒有發現任何關於分析CRL文件的信息。 – StackNewbie