在x509Certificates对象PowerShell中找不到“ AuthorityKeyIdentifier”值

问题描述 投票:0回答:2

我从x509certificates对象中提取“ SubjectKeyIdentifier”值没有问题,我首先将X509对象设置为变量$ Cert,然后执行以下行来完成此操作:

$Cert.Extensions.SubjectKeyIdentifier

该值对应于我在MMC GUI中看到的值。

但是,没有这样的值或选项

$Cert.Extensions.AuthorityKeyIdentifier.

我可以通过以下方式进一步进入对象:

$Cert.Extensions.Oid

并且产生两列,例如:

Value       FriendlyName
2.5.29.14   Subject Key Identifier
2.4.29.35   Authority Key Identifier

但是,我没有办法像我对主题密钥标识符所做的那样获得授权密钥标识符的实际或真实值,并且该值与MMC GUI中的值相对应。要确认,这是一个叶级证书,并且GUI的主题密钥标识符确实显示了一个长字符串值。

如何提取对象中的值?

powershell x509 authoritykeyidentifier
2个回答
0
投票
该框架没有用于授权密钥标识符的内置解码器。您必须使用ASN.1 DER读取器,例如https://dotnet.myget.org/feed/dotnet-corefxlab/package/nuget/System.Security.Cryptography.Asn1.Experimental,Bouncy Castle或其他非内置技术(或手动滚动),然后根据编码对X509Extension.RawData值进行解码在https://tools.ietf.org/html/rfc5280#section-4.2.1.1中。

0
投票
正如bartonjs所说,在PowerShell或.NET中没有对AKI扩展的内置支持。您必须使用第三方库或工具。但是,如果允许使用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:\>

© www.soinside.com 2019 - 2024. All rights reserved.