比方说,我有三个证(以Base64格式)C#如何验证根CA证书(x509)链?
Root
|
--- CA
|
--- Cert (client/signing/whatever)
我如何可以验证在C#中的证书和证书路径/链? (所有这三个证书可能不在我的电脑证书商店)
编辑:BouncyCastle有验证功能。但我试图不使用任何第三方库。
byte[] b1 = Convert.FromBase64String(x509Str1);
byte[] b2 = Convert.FromBase64String(x509Str2);
X509Certificate cer1 =
new X509CertificateParser().ReadCertificate(b1);
X509Certificate cer2 =
new X509CertificateParser().ReadCertificate(b2);
cer1.Verify(cer2.GetPublicKey());
如果cer1未由cert2(CA或root)签名,则会有异常。这正是我想要的。
我该如何验证3一次?我如何链接3个证书? – Jacob
我不确定,但尝试创建临时存储[X509Store](http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509store.aspx)。将所有证书添加到该商店。在此之后,您应该调用最低证书上的验证。 – MichaelMocko