Import-Pfx Cert с паролем - развертывание - PullRequest
1 голос
/ 05 июня 2019

Я хочу выдать сертификат с паролем личного ключа. Я знаю, что это не безопасно. Был бы более безопасный способ. Но я не могу понять, чтобы сделать это.

$test = ConvertTo-SecureString -String "plaintextpassword" -Force -AsPlainText<code>

Import-PfxCertificate -FilePath $filelocale -CertStoreLocation Cert:\LocalMachine\My -Password $test

Получение: Import-PfxCertificate: для файла PFX, который вы пытаетесь импортировать, требуется либо другой пароль, либо членство в субъекте Active Directory, к которому он относится. защищенный.

Если я бегу ниже, это работает

$test = Get-Credential -UserName 'enter pwd' -Message "Enter PWD"

Import-PfxCertificate -FilePath $filelocale -CertStoreLocation Cert:\LocalMachine\My -Password $test.Password

1 Ответ

2 голосов
/ 05 июня 2019

Поскольку использование объекта учетных данных помогает, просто создайте учетные данные без подсказок:

$Pass = ConvertTo-SecureString -String 'plaintextpassword' -Force -AsPlainText
$User = "whatever"
$Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $Pass
Import-PfxCertificate -FilePath $filelocale -CertStoreLocation Cert:\LocalMachine\My -Password $Cred.Password

Обратите внимание на одинарные кавычки, которые я использовал для предотвращения интерпретации ввода в PowerShell. Это особенно важно для любого пароля с символами. Если использование объекта учетных данных не работает при использовании двойных кавычек вокруг «обычного текста», вероятно, проблема заключается в том, что вы просто указываете, а не то, что фактически получаете в конечном результате.

Если вы хотите проверить это самостоятельно, вы можете использовать следующее на основе « Работа с паролями, защищенными строками и учетными данными в Windows PowerShell ». Это определенно стоит прочитать.

$Pass = ConvertTo-SecureString -String "plaintext$_password" -Force -AsPlainText
$User = "whatever"
$Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $Pass
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Cred.Password)
$PlainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
$PlainPassword

Обратите особое внимание на использование двойных кавычек и дополнительных $_, которые вызывают проблему. Цветовое форматирование может помочь вам обнаружить проблему раньше, если вы используете недавний PowerShell или другой инструмент, который выделил цветом. Вы, вероятно, поймете, что я имею в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...