我目前遇到了一些程序化自签名证书的问题,我已经添加了分发点。基本上,关键问题是由于某种原因,我使用Bouncy Castle以编程方式生成的证书,他们无法访问证书中指定的CRL。请参阅以下有关certutil的示例输出;
我一直在撕扯我的头发为什么会出现这个问题,所以至少要排除生成的证书作为问题,然后我使用open ssl生成了类似的证书结构。令我沮丧的是,该实例中的客户端证书能够毫无问题地连接到列出的CRL。
我可以包含用于生成Root和Client证书的代码(如果它有用),并且还可以提供更多的certutil outputif,它将有助于追踪问题。
非常感谢,
>CertContext[0][0]: dwInfoStatus=101 dwErrorStatus=1000040
Issuer: CN=MyNewCA
NotBefore: 1/17/2016 3:10 AM
NotAfter: 1/17/2018 3:10 AM
Subject: CN=Test.User
Serial: 855daec11dd981ae87c379dadd323b
2adc3620f29e8347ec7f007bee3b05a98a3ed49a
Element.dwInfoStatus = CERT_TRUST_HAS_EXACT_MATCH_ISSUER (0x1)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
Element.dwErrorStatus = CERT_TRUST_REVOCATION_STATUS_UNKNOWN (0x40)
Element.dwErrorStatus = CERT_TRUST_IS_OFFLINE_REVOCATION (0x1000000)
Certificate AIA
No URLs "None" Time: 0
Certificate CDP
Wrong Issuer "Base CRL (01)" Time: 0
[0.0] http://localhost/MyURL/RootRevocation2.crl
>Certificate OCSP
No URLs "None" Time: 0
Application[0] = 1.3.6.1.5.5.7.3.2 Client Authentication
>CertContext[0][1]: dwInfoStatus=109 dwErrorStatus=0
Issuer: CN=MyNewCA
NotBefore: 1/17/2016 3:10 AM
NotAfter: 1/17/2026 3:10 AM
Subject: CN=MyNewCA
Serial: e4fcfcad23d16adef6f06bcacc5041
9e500eac5e7a8b5545c92c8a27f1a96a0d223384
Element.dwInfoStatus = CERT_TRUST_HAS_EXACT_MATCH_ISSUER (0x1)
Element.dwInfoStatus = CERT_TRUST_IS_SELF_SIGNED (0x8)
Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
编辑:在CryptoGuys评论的背面,我决定深入研究我的证书生成代码,以确保签名按预期工作,我确实发现了代码的问题。对于任何想要执行类似任务的人来说 - 这是我基于我的Bouncy Castle CRL一代的帖子的链接,这帮助我解决了我所遇到的逻辑缺陷;
Create CRL file with Bouncy Castle c#
Bouncy Castle CRL帮助文件位于此处; http://www.bouncycastle.org/wiki/display/JA1/X.509+Certificate+Revocation+Lists
谢谢你的帮助