SignedXml.CheckSignature如何验证证书

时间:2015-06-03 03:19:04

标签: windows ssl certificate

这里我有一个关于SignedXml.CheckSignature原理的问题。

如我们所知,如果我们使用verifySignatureOnly = false调用该函数,它可以验证证书。

[ComVisibleAttribute(false)]
public bool CheckSignature(
    X509Certificate2 certificate,
    bool verifySignatureOnly
)

但它怎么验证? 根据我的理解,证书应该是由CA私钥加密的公钥。所以CheckSignature可以获取CA公钥,然后解密证书? 我想知道它是如何工作的。希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:1)

它使用Windows证书存储区构建最高可信根权限的证书链。在构建链时,该方法还会验证证书的撤销状态(通常来自链中所有权限的CRL),以检查链中的任何证书是否仍然有效。

如果证书中有OCSP链接,那么该方法可能更喜欢检查这些证书的OCSP状态,但这取决于您使用的操作系统(我认为Win Xp没有使用OCSP,但默认情况下赢得7+) )。

如果方法执行的任何检查失败,即CRL不可用或链无法构建到受信任的根颁发机构或证书被撤销,则方法返回false。