簡體   English   中英

在 x509Certificates object PowerShell 中找不到“AuthorityKeyIdentifier”值

[英]Cannot find “AuthorityKeyIdentifier” value in x509Certificates object PowerShell

我從 x509certificates object 中提取“SubjectKeyIdentifier”值沒有問題,我首先將 X509 object 設置為變量 $Cert,然后執行以下行:

$Cert.Extensions.SubjectKeyIdentifier

該值對應於我在 MMC GUI 中看到的值。

然而,沒有這樣的價值或選擇

$Cert.Extensions.AuthorityKeyIdentifier.

我可以通過 go 進一步進入 object:

$Cert.Extensions.Oid

這會產生兩列,例如:

Value       FriendlyName
2.5.29.14   Subject Key Identifier
2.4.29.35   Authority Key Identifier

但是,我發現沒有辦法像我為主題密鑰標識符所做的那樣獲得授權密鑰標識符的實際值或真實值,並且它對應於 MMC GUI 中的值。
確認一下,這是一個葉級證書,GUI 確實顯示了主題密鑰標識符的長字符串值。

如何在 object 中提取該值?

該框架沒有用於授權密鑰標識符的內置解碼器。 您必須使用 ASN.1 DER 閱讀器,例如https://dotnet.myget.org/feed/dotnet-corefxlab/package/nuget/System.Security.Cryptography.Asn1.Experimental、Bouncy Castle 或其他非內置技術(或手動滾動)並根據https://tools.ietf.org/html/rfc5280#section-4.2.1.1中的編碼解碼 X509Extension.RawData 值。

正如 bartonjs 所說,在 PowerShell 或 .NET 中沒有對 AKI 擴展的內置支持。 您必須使用 3rd 方庫或工具。 不過,如果你被允許使用 PS 模塊,你可以試試我的PowerShell PKI (PSPKI)模塊。 該模塊附帶一個庫,其中包含大多數 X.509 擴展的類,包括 AKI。

導入模塊后,可以調用:

$cert.ResolvedExtensions

它返回一個解碼擴展的集合:

PS C:\> $cert.ResolvedExtensions | ?{$_.oid.value -eq "2.5.29.35"}

IncludedComponents : KeyIdentifier
KeyIdentifier      : 0159abe7dd3a0b59a66463d6cf200757d591e76a
IssuerNames        :
SerialNumber       :
Critical           : False
Oid                : 2.5.29.35 (Authority Key Identifier)
RawData            : {48, 22, 128, 20...}


PS C:\>

暫無
暫無

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

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