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 に答える