使用C#中的公钥验证CA证书

时间:2013-08-12 14:07:55

标签: c# .net x509certificate

我有以下情况:

我从CA收到证书,我也有CA的公钥,我想用它来验证证书的有效性。

现在我们使用第三方库SecureBlackBox,但我们希望摆脱项目中的商业依赖。 SBB的工作原理如下:

cert.ValidateWithCA(CACertificate);

有没有办法用提供的X509Certificate2 .NET类做到这一点? 我发现方法Verify()不带任何参数,但我不确定它的作用......

谢谢

1 个答案:

答案 0 :(得分:2)

如果不了解ValidateWithCA 所做的事情,我很难具体告诉你Verify是否是一个完美的替代品。 Verify最终调用pszPolicyOID值为Verify的本地CertVerifyCertificateChainPolicy函数。验证不是简单地验证一个证书是否由另一个证书签名,它会检查其他内容,例如撤销任何证书在链内。

我建议您创建一系列测试,以验证ValidateWithCAValidateWithCA相比较有效。

更新

阅读Verify的文档后,将其记录为

  

验证由证书颁发机构签名的证书

这不像{{1}}那么彻底。由您来决定是否符合您的要求。如果不一定是您想要的,则可以设置ServicePointManager.ServerCertificateValidationCallback回调,并在不需要相同级别的验证时提供自定义验证。