这是一个扩展问题:
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);
答案 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和最近发布了更多的假证书。