我必须检查一个特定的证书。不幸的是,我不知道如何才能做到这一点。我要验证的证书是由我自己的ca.签署的。我需要检查整个证书链。验证应该在C#中完成。
亲切的问候, 迈克尔
答案 0 :(得分:3)
如果您想要执行所有操作,包括在代码中验证链,那么您需要implement "custom validation" and integrate that into the WCF Host:
Client.ServiceCertificate.Authentication.CertificateValidationMode =
X509CertificateValidationMode.Custom;
Client.ServiceCertificate.Authentication.CustomCertificateValidator =
new MyCertificateValidator();
为了自己验证链条,您应该查看X509Chain和X509Store - 了解如何实施此类链验证,请查看Mono's implementation { {1}} ...基本上您使用Verify
方法在X509Certificate2Collection上搜索父级,依此类推......具有自定义验证的验证条件取决于您(有效签名,未过期) ...)。
MSDN上的一些参考链接: