如何验证特定CA的证书链?

时间:2012-02-29 17:53:51

标签: .net x509certificate certificate pki x509certificate2

我目前有一个应用程序需要验证证书是否受特定CA信任。我遇到的问题是,问题证书实际上可能属于与我想要验证的CA交叉认证的根CA.所以我想确保我正确地构建了一个链到交叉认证的根ca 。下面是一个信任链可能是什么样子的例子。

1) Root CA1 -> Inter CA1 -> John Doe Signed Cert
2) Bridge CA Root -> X-Cert Root CA1 -> Inter CA1 -> John Doe Signed Cert

上述两个证书链都有效,但我想确保我建立了第2号链。

X509Certificate2 johnDoeCert = GetJohnDoeCert();
var chain = new X509Chain();
chain.Build(johnDoeCert);
chain.ChainElements[chain.ChainElements.Count - 1];     // I want to ensure this is Bridge CA Root

感谢任何帮助。

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要做的是检查您了解目标证书的信息,在本例中为Bridge CA Root

您可以检查证书上的颁发者名称,如下所示:

string bridgeCAIssuerName = "CN=Bridge Root CA, OU=PKI..."; //Fill in with correct information
if(ch.ChainElements[ch.ChainElements.Count - 1].Certificate.IssueName.Name == bridgeCAIssuerName)
{
  //This happens if it was true
}

您可以使用相同的技术检查证书的指纹或序列。