У меня есть файл .crt и .key, из которого я создаю файл .pfx с использованием OpenSSL. Я пытаюсь использовать PowerShell для импорта файла .pfx в Cert: \ LocalMachine \ My, затем я буду использовать этот сертификат для OpenVPN. Используя следующий код, я не получаю никаких ошибок при импорте:
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2
$cert.import("$env:TEMP\$site.pfx", $certPassword, "PersistKeySet")
$store = New-Object System.Security.Cryptography.X509Certificates.X509Store("My", "LocalMachine")
$store.open("MaxAllowed")
$store.add($cert)
$store.close()
Я вижу сертификат в MMC, но в файле журнала OpenVPN отображается:
ошибка: C5066064: Microsoft Cryptoapi: CryptAcquireCertificatePrivateKey: Набор ключей не существует
Я пробовал $ certPassword как строку и как безопасную строку. Когда я импортирую сертификат через графический интерфейс (копируя пароль из содержимого $ certPassword), OpenVPN запускается нормально.
Я также пробовал этот код, но видел то же поведение:
Import-PfxCertificate -Password ($certPassword | ConvertTo-SecureString -AsPlainText -Force) -CertStoreLocation Cert:\LocalMachine\My -FilePath $env:temp\$site.pfx
Наконец, я запускаю сеанс PowerShell с повышенными правами.
Что я мог делать не так? Спасибо.