.net 如何验证指向特定CA的证书链?

.net 如何验证指向特定CA的证书链?,.net,x509certificate,certificate,pki,x509certificate2,.net,X509certificate,Certificate,Pki,X509certificate2,我目前有一个应用程序需要验证证书是否受特定CA的信任。我的问题是,颁发的证书可能实际上属于根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 上述两个证书链都是有

我目前有一个应用程序需要验证证书是否受特定CA的信任。我的问题是,颁发的证书可能实际上属于根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
感谢您的帮助


谢谢

您需要做的是对照您所知道的有关目标证书的信息进行检查,在本例中为网桥CA根

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

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
}
您可以使用相同的技术检查证书的指纹或序列号