如何将CRL地址添加到自签名CA证书?

时间:2011-03-28 20:33:47

标签: security code-signing

这是一个扩展问题:

how-do-i-create-a-self-signed-certificate-for-code-signing-on-windows

为了更进一步,如果我已经创建了CA证书并创建了一组SPC证书,我该如何创建撤销列表并分发它们? (注意:我不知道CRL如何工作,如何分发等)如果我对GUESS如何工作,我希望CA证书定义了一些可以下载CRL的HTTP地址,windows会联系到在第一次查询证书链时,以及每次当前CRL到期时解决...然后我所要做的就是创建一个签名的Web地址来分发证书序列号......?

编辑:自我解答

对于任何感兴趣的人,Bouncy Castle是一个Java + C#库,提供大量PKI加密API,包括证书生成。

他们的示例代码(在他们的下载中)演示了如何生成一组链接的CA,中级和“个人”证书。

它没有显示的是如何正确分配基于HTTP的CRL - 您可以使用以下代码执行此操作:

GeneralName gn = new GeneralName(new DerIA5String("http://localhost/revocationlist.crl"), 6);


GeneralNames gns = new GeneralNames(gn);
DistributionPointName dpn = new DistributionPointName(gns);
DistributionPoint distp = new DistributionPoint(dpn, null, null);

DerSequence seq = new DerSequence(distp);

v3CertGen.AddExtension(X509Extensions.CrlDistributionPoints, false, seq);

2 个答案:

答案 0 :(得分:3)

从crypto-147开始,提供的代码已更改为

GeneralName gn = new GeneralName(GeneralName.uniformResourceIdentifier, new DERIA5String(crlUrl));
GeneralNames gns = new GeneralNames(gn);
DistributionPointName dpn = new DistributionPointName(gns);
DistributionPoint distp = new DistributionPoint(dpn, null, null);
DERSequence seq = new DERSequence(distp);
certGen.addExtension(Extension.cRLDistributionPoints, false, seq);

答案 1 :(得分:1)

假设您拥有CA证书和一组由该CA证书签名的证书。然后,您可以创建一个CRL,它可能(可能)包含以前使用CA证书签名的已撤销证书的ID。实际上,您通过相应的证书扩展(CRLDistributionPoint)将CRL的URL添加到CA证书本身。

由于您没有指定,您使用哪些工具或库来生成证书,我不能说如何添加扩展。

PS:我建议您了解使用它的技术。特别是在实现安全性方面。否则你将陷入困境,比Comodo更糟糕,Comodo的子CA已经为google,yahoo和最近发布了更多的假证书。