我遇到了CryptoAPI证书链验证的问题,尤其是撤销检查。问题是我在Windows CE下工作(没有互联网访问权限),而CryptoAPI也没有为它导出CRL API。
https://msdn.microsoft.com/en-us/library/ms936955.aspx
我已经完成了一些研究,似乎CertGetCertificateChain()
进行了撤销检查,但是在引擎盖下。
我创建时使用OpenSSL
自签名Root CA
和Intermediate CA
(使用根CA签名),最后我使用Intermediate CA
签署了结束证书,其中包含扩展名{ {1}}其中指出crlDistributionPoints
的CRL以Intermediate CA
格式编码。为简洁起见,我们将其命名为PEM
。
所以,intermediate.crl.pem
在我的磁盘上是持久的,而在intermediate.crl.pem
我将它链接为:
openssl.cnf
我不确定,这是正确的,但我也不确定CryptoAPI不会期望某种不同的格式(例如DER而不是PEM)。
最后撤销检查不正确。我总是得到证书被撤销的错误,无论它是否在CRL中。
你能在这里给我一些指导吗?重要的是,...
[ extensions_section ]
crlDistributionPoints=//windows//intermediate.crl.pem
...
不能通过网络获得(它必须抵制文件系统)。
另外,我注意到Windows CE支持一个名为intermediate.crl.pem
的证书存储,CryptoAPI的链引擎在验证期间检查并返回错误(如果证书无效),如果证书是验证在那里。
使用此商店代替CRL是更好的方法吗?