Извлечение сертификатов из файла PFX _without_ с использованием OpenSSL - PullRequest
2 голосов
/ 20 февраля 2009

Я нашел ответ , в котором используется OpenSSL , но я работаю в Windows, и его нелегко передать. Есть ли способ (например, с помощью CERTUTIL или VBScript) просмотреть сертификаты в файле .PFX?

Если я использую «certutil -dump», он запрашивает пароль для ключа. Я не хочу ключ, и сертификат должен быть открытым.

Ответы [ 2 ]

4 голосов
/ 06 сентября 2011

В файле PFX оба секретных ключа и сертификата зашифрованы (с использованием одного и того же пароля). Если вы не знаете пароль, вы не получите сертификат. Если вы это знаете, certutil -dump должно хватить.

1 голос
/ 22 октября 2018

Вы можете использовать Get-PfxData из pkiclient.

https://docs.microsoft.com/en-us/powershell/module/pkiclient/get-pfxdata?view=win10-ps

Пример:

$mypwd = ConvertTo-SecureString -String "localhost" -Force -AsPlainText
$mypfx = Get-PfxData -FilePath C:\Users\oscar\Desktop\localhost.pfx -Password 
$mypfx
$mypfx.EndEntityCertificates

Если у вас есть сертификат в хранилище и вам нужен файл .sst (сериализованное хранилище сертификатов Microsoft), .cer (CERT) или .p7b (PKCS # 7), вы можете использовать Export-Certificate из pkiclient ( Или экспортируйте его через MMC без закрытого ключа).

https://docs.microsoft.com/en-us/powershell/module/pkiclient/export-certificate?view=win10-ps

Пример экспорта сгенерированного IIS Express сертификата localhost:

Запустить mmc.exe.

Затем перейдите к:

Файл -> Добавить или удалить оснастку -> Сертификаты -> Добавить -> Учетная запись компьютера -> Локальный компьютер

Раскройте личную папку, и вы увидите свой сертификат localhost.

Дважды щелкните мышью, перейдите в раздел «Сведения» и скопируйте сертификат Thumbprint.

Затем выполните команду:

$cert = (Get-ChildItem -Path cert:\LocalMachine\My\{YourThumbprint})
Export-Certificate -Cert $cert -FilePath C:\Users\oscar\Desktop\localhost.cer

Примечание. Если вам нужен сертификат от текущего пользователя, замените LocalMachine на CurrentUser в приведенной выше команде.

...