Не удается найти значение AuthorityKeyIdentifier в PowerShell объекта x509Certificates
У меня нет проблем с извлечением значения "SubjectKeyIdentifier" из объекта x509certificates, что я делаю, сначала устанавливая объект X509 на переменную $Cert, а затем выполняя следующую строку:
$Cert.Extensions.SubjectKeyIdentifier
Это значение соответствует тому, что я вижу в графическом интерфейсе MMC.
Однако для
$Cert.Extensions.AuthorityKeyIdentifier.
Я могу углубиться в объект с помощью:
$Cert.Extensions.Oid
И это дает два столбца, например:
Value FriendlyName
2.5.29.14 Subject Key Identifier
2.4.29.35 Authority Key Identifier
Однако я не нашел способа получить фактическое или истинное значение идентификатора ключа авторизации, как я сделал для идентификатора ключа субъекта и которое соответствует значению в графическом интерфейсе MMC.
Для подтверждения, это сертификат конечного уровня, и графический интерфейс действительно показывает длинное строковое значение для идентификатора ключа субъекта.
Как мне извлечь это значение из объекта?
2 ответа
Как сказал 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:\>
Платформа не имеет встроенного декодера для идентификатора ключа авторизации. Вам нужно будет использовать считыватель DER ASN.1, например https://dotnet.myget.org/feed/dotnet-corefxlab/package/nuget/System.Security.Cryptography.Asn1.Experimental, Bouncy Castle или другой не встроенные технологии (или вручную) и декодировать значение X509Extension.RawData в соответствии с кодировкой в https://tools.ietf.org/html/rfc5280.