5

X509Certificate2 インスタンスから AuthorityKeyIdentifier 拡張機能を抽出する方法を探しています。これに対する組み込みのサポートは見当たりませんでしたが、Windows は証明書チェーンを適切に構築できるため、機能が何らかのレベルで存在しなければならないことはわかっています。答えが DER パーサーをロールすることである場合、参照できる適切な実装はありますか?

4

2 に答える 2

13

X509Certificate2.Extensions プロパティの拡張機能を反復処理し、OID 2.5.29.35 の拡張機能を探します ( http://www.alvestrand.no/objectid/2.5.29.35.htmlに従って)。それが AuthorityKeyIdentifier 拡張機能です。

【追記:以下追記しました】

Extensions プロパティの各メンバーは、エンコードされた ASN です。したがって、次のようにして、人間が読み取れる形式または機械で解析可能な形式で取得できます。

using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

...

X509Extension extension; // The OID 2.5.29.35 extension
AsnEncodedData asndata = new AsnEncodedData(extension.Oid, extension.RawData);
Console.WriteLine(asndata.Format(true));

Microsoft 中間 CA 証明書の 1 つである場合、Format() メソッドは次を返します。

[1]Authority Info Access
     Access Method=Certification Authority Issuer (1.3.6.1.5.5.7.48.2)
     Alternative Name:
          URL=http://www.microsoft.com/pki/certs/MicrosoftRootCert.crt

解析するのは確かに簡単ではありませんが、正規表現で始まる行を\[\d+\]Authority Info Access探し、その下にある正規表現の行を見つけてURL=(.+)(フォーマットでは 8 つのスペースが不明瞭です)、括弧で囲まれたグループの URL を使用できます。

于 2012-08-31T12:25:23.767 に答える
-1

利用可能な簡単なオプションがあります。証明書をより柔軟に処理できる既存のコンポーネントを使用してください。BouncyCastleまたはSecureBlackboxを使用できます。

于 2012-08-27T19:50:27.140 に答える