簡體   English   中英

如何從.NET中的X509Certificate2中提取AuthorityKeyIdentifier

[英]How to extract the AuthorityKeyIdentifier from a X509Certificate2 in .NET

我正在尋找一種從X509Certificate2實例中提取AuthorityKeyIdentifier擴展的方法。 我沒有看到任何內置支持,但由於Windows可以正確構建證書鏈,我知道功能必須存在於某種程度。 如果答案是推送DER解析器,是否有可以引用的良好實現?

迭代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證書之一,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=(.+) (八個空格不清楚在格式化)並使用括號組中的URL。

有一個更簡單的選項 - 采用一些現有的組件,可以更靈活地處理證書。 您可以使用BouncyCastle或我們的SecureBlackbox

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM