编程方式读取X.509证书吊销列表(CRL)(一)应用BouncyCastleCrypto
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编程⽅式读取X.509证书吊销列表(CRL)(⼀)应⽤BouncyCastleCrypto
X.509 结构的证书被吊销后,序列号会出现在Certificate Revocation List (CRL) 中,我们可以将它另存为⼀个.crl的⽂件,就能够查看被吊销的证书信息,但.NET Framework并没有提供可对Crl进⾏属性访问的类(Java中提供了X509Crl),要实现这样的功能,我们得借助.NET框架之外的技术:Bouncy Castle Crypto或者Mono SDK。
先介绍如何使⽤Bouncy Castle Crypto(Version 1.4)读取X.509证书及吊销列表。
Bouncy Castle Crypto是⼀个开源的加/解密框架,下载地址:
⾸先加⼊X.509证书所在的命名空间:
using Org.BouncyCastle.X509;
其中的⼏个有关的类:
X509CrlParser ⽤于构建⼀个crl对象,⽀持从字节数组和内存流中获取数据。
X509Crl crl对象,包含证书吊销组织、吊销证书列表、时间戳等信息。
X509CrlEntry crl对象中被吊销的证书对象。
ISet 在Org.BouncyCastle.Utilities.Collections下,X509Crl中被读取所有证书对象放在HashSet中,以ISet接⼝类型返回,HashSet⽀持迭代器。
下⾯是读取Crl的⽰例:
//获取obj
List<int> numbers = new List<int>();
X509CrlParser parser = new X509CrlParser();
X509Crl crl = parser.ReadCrl((byte[])obj);
//获取所有的吊销证书
ISet crlSet = crl.GetRevokedCertificates();
if (crlSet != null && crlSet.Count > 0)
{
foreach (object o in crlSet)
{
X509CrlEntry crlEntry = (X509CrlEntry)o;
int serialNumber = crlEntry.SerialNumber.IntValue;
if (!numbers.Contains(serialNumber))
{
numbers.Add(serialNumber);
}
}
}
X509CrlEntry.SerialNumber.IntValue将16进制的证书序列号以10进制的Int32类型输出。
另外再提⼀下BC Crypto的X509Certificate类和.NET Framework下的X509Certificate2类的区别:
X509Certificate2输出证书DN信息时,属性SubjectName是将个⼈信息按照从⼩到⼤(姓名-组织-市-省-国家)排列,⽽BC Crypto的
X509Certificate使⽤SubjectDN属性,将个⼈信息从⼤到⼩排列,市的标识是ST,.NET是S。
如果需要根据证书⽣成组织结构,这个需要特别注意。