作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个扩展问题:
how-do-i-create-a-self-signed-certificate-for-code-signing-on-windows
更进一步,如果我创建了 CA 证书,并创建了一组 SPC 证书,我该如何创建撤销列表并分发它们? (注意:我不知道 CRL 是如何工作的,它们是如何分布的等等)如果我要猜测它是如何工作的,我希望 CA 证书定义了一些可以下载 CRL 的 HTTP 地址,Windows 会联系它第一次查询证书链时的地址,以及每次当前 CRL 到期时...然后我所要做的就是创建一个分发证书序列号的签名网址...?
编辑:自我回答
对于其他感兴趣的人,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);
最佳答案
从 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);
关于security - 如何将 CRL 地址添加到自签名 CA 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464749/
我是一名优秀的程序员,十分优秀!