XMLDSIGを使用して構成ファイルに署名しています。CAがXMLの署名に使用できるキーを発行できるようにしたいと思います。次に、XMLがCAによって発行されたキーで署名されていることを確認したいと思います。
SignedXml
オブジェクトから署名証明書を取得するにはどうすればよいですか?証明書チェーンをたどって特定のCAに戻るにはどうすればよいですか?
CAの公開鍵は、証明書ストアではなく実行可能ファイルに保存されることに注意してください。
XMLDSIGを使用して構成ファイルに署名しています。CAがXMLの署名に使用できるキーを発行できるようにしたいと思います。次に、XMLがCAによって発行されたキーで署名されていることを確認したいと思います。
SignedXml
オブジェクトから署名証明書を取得するにはどうすればよいですか?証明書チェーンをたどって特定のCAに戻るにはどうすればよいですか?
CAの公開鍵は、証明書ストアではなく実行可能ファイルに保存されることに注意してください。
任意の証明書を XML-DSIG ファイルに添付するには、<X509Data>
要素を追加します。.NET でこれを行うには、次を使用します。
signedXml.KeyInfo.AddClause(
new KeyInfoX509Data(certificate, X509IncludeOption.WholeChain));
XML ファイルから証明書を抽出するには、次を使用します。
var certificates = signedXml.KeyInfo.OfType<KeyInfoX509Data>().Single();
次に、以下を使用してチェーンを検証できます。
var chain = new X509Chain();
chain.ChainPolicy.ExtraStore.AddRange(
certificates.Cast<X509Certificate2>().ToArray());
var chainIsOk = chain.Build(signingCertificate);
署名に実際に使用された証明書 (したがって の値) を特定するには、から返されたキーと一致するsigningCertificate
含まれている証明書を見つける必要があります。CheckSignatureReturningKey