1

我在 CryptoAPI 的证书链验证方面遇到问题,特别是在吊销检查方面。问题是我在 Windows CE 下工作(没有互联网访问权限),而 CryptoAPI 不会为它导出 CRL API。

https://msdn.microsoft.com/en-us/library/ms936955.aspx

我做了一些研究,似乎CertGetCertificateChain()确实进行了撤销检查,但在幕后。

我已经用OpenSSL自签名Root CAIntermediate CA(用根 CA 签名)创建了,最后我用 签署了一个结束证书Intermediate CA,其中包含crlDistributionPoints指向以格式Intermediate CA编码的 CRL的扩展名。PEM为简洁起见,我们将其命名为intermediate.crl.pem

所以,intermediate.crl.pem在我的磁盘上是持久的,在我的openssl.cnf我链接它是这样的:

...
[ extensions_section ]

crlDistributionPoints=//windows//intermediate.crl.pem
 ...

我不确定这是否正确,但我也不确定 CryptoAPI 是否期望某些不同的格式(例如 DER 而不是 PEM)。

最后撤销检查不正确。无论证书是否在 CRL 中,我总是收到证书被吊销的错误。

你能在这里给我一些指导吗?重要的是intermediate.crl.pem不能通过网络获取(它必须抵抗文件系统)。

另外,我注意到 Windows CE 支持一个名为DisallowedCryptoAPI 的链引擎在验证期间检查的证书存储,如果正在验证的证书在其中,则返回错误(说证书无效)。

使用这家商店而不是 CRL 是更好的方法吗?

4

0 回答 0