Как следует из названия, я хотел бы экспортировать свой закрытый ключ без использования OpenSSL или любого другого стороннего инструмента. Если мне нужен .cer
файл или .pfx
файл, я могу легко экспортировать их через MMC или PowerShell pkiclient
, но я не могу найти способ получить закрытый ключ.
https://docs.microsoft.com/en-us/powershell/module/pkiclient/export-certificate?view=win10-ps
Используя онлайн-инструмент, например https://www.sslshopper.com/ssl-converter.html это не нормально.
PS Версия:
PS C:\Users\oscar> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.17134.228
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.228
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Я могу получить открытый ключ так:
(Get-PfxCertificate -FilePath C:\Users\oscar\Desktop\localhost.pfx).GetPublicKey()
И экспортируйте весь сертификат следующим образом:
(Get-PfxCertificate -FilePath C:\Users\oscar\Desktop\localhost.pfx).GetRawCertData()
Результат от
PS C:\Users\oscar> $mypwd = ConvertTo-SecureString -String "MyPassword" -Force -AsPlainText
PS C:\Users\oscar> $mypfx = Get-PfxData -FilePath C:\Users\oscar\Desktop\localhost.pfx -Password $mypwd
PS C:\Users\oscar> $mypfx
OtherCertificates EndEntityCertificates
----------------- ---------------------
{} {[Subject]...
PS C:\Users\oscar> $mypfx.EndEntityCertificates
Thumbprint Subject
---------- -------
8ED4971564E35099D6DB490C3756E2AD43AAAAAA CN=localhost
Протестировал команду от @Brad, но я получил ошибку ниже.
Закрытый ключ НЕ экспортируется в виде обычного текста
certutil -exportPFX -p "myPassword" -privatekey -user my <Certificate Serial Number> C:\localhost.pfx
Подобно мастеру экспорта сертификатов в сертификатах MMC, экспорт доступен только в .pfx
, если включен ключ.
.pfx
файл, поскольку.cer
файлы не хранят закрытые ключи. Какой у тебя$PSVersionTable
? Вы можете использоватьGet-PfxData -FilePath 'mycertificate.pfx' -Password (ConvertTo-SecureString -Force -AsPlainText -String 'MyClearTextPassword')
? - person Petru Zaharia   schedule 23.10.2018