0

我目前有一个应用程序需要验证证书是否受特定 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

任何帮助表示赞赏。

谢谢!

4

1 回答 1

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
}

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

于 2012-07-06T17:47:26.497 回答