Как экспортировать корневой и промежуточный сертификаты подписи из файла сертификата через PowerShell?

Использование PowerShell; Мне нужно взять файл сертификата (.cer/.crt) и экспортировать промежуточный и корневой файлы сертификатов подписи в тот же каталог. Максимум, что я могу сделать, это получить имя издателя сертификатов (промежуточный ЦС). Как я могу использовать PowerShell для определения промежуточных и корневых центров сертификации и сохранения этих сертификатов?

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 D:\Netscaler_Certificates\example.2021.cer
$cert.IssuerName

дает мне:

Name                                   Oid                                RawData            
----                                   ---                                -------            
CN=Subordinate CA, DC=domain, DC=com   System.Security.Cryptography.Oid   {48, 99, 49...}

person jeremy b.    schedule 07.01.2021    source источник


Ответы (2)


Вам нужно построить цепочку сертификатов, а затем экспортировать элементы цепочки:

$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 D:\Netscaler_Certificates\example.2021.cer
$chain = new-object security.cryptography.x509certificates.x509chain
[void]$chain.Build($cert)
$chain.ChainElements | %{
    sc -path .\$($_.Certificate.GetNameInfo("dnsName",$false)).cer -value $_.Certificate.RawData -encoding byte
}
person Crypt32    schedule 07.01.2021

.... и чтобы разместить сертификаты, которые вы только что экспортировали из предыдущего ответа, следующая строка может быть:

(($chain.ChainElements.Certificate.Subject | Select-Object -Skip 1) -Replace ", .*").trimstart("CN=")
person spricer    schedule 07.05.2021