Командлет Import-AzKeyVaultCertificate приводит к следующему: ключ недействителен для пользователя в указанном состоянии - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь импортировать сертификат .pfx в хранилище ключей Azure, но у меня возникают некоторые проблемы.

Import-AzKeyVaultCertificate -VaultName "SecHash03" -Name "CodeSigning" -FilePath "\path\to\my\cert.pfx"

Результат:

Import-AzKeyVaultCertificate : Key not valid for use in specified state.
At line:1 char:1
+ Import-AzKeyVaultCertificate -VaultName SecHash03 -Name " ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Import-AzKeyVaultCertificate], CryptographicException
    + FullyQualifiedErrorId : Microsoft.Azure.Commands.KeyVault.ImportAzureKeyVaultCertificate

Я запрашиваю этот сертификатиз ЦС предприятия, используя certreq с компьютера в том же домене, что и ЦС.Для импорта сертификата пароль не требуется.Затем планировалось загрузить этот сертификат в вышеупомянутый ключ Azure.

Я попытался использовать портал Azure для импорта этого сертификата, и это работает нормально;импорт и использование оба работают хорошо.Так что это не проблема с ролями, как предлагается в другом аналогичном ответе Stackoverflow ( Импорт сертификата в хранилище ключей Azure: ключ недопустим для использования в указанном состоянии ).

Пожалуйста, совет!

1 Ответ

1 голос
/ 08 мая 2019

Насколько мне известно, при импорте ранее существовавшего сертификата файла .pfx в хранилище ключей Azure необходимо указать пароль, который используется для защиты сертификата, так как вам нужно экспортировать сертификат в Закрытый ключ и включите все сертификаты в путь сертификата, если это возможно.Например,

# Export the cert to a PFX with password
$password = ConvertTo-SecureString "Password!" -AsPlainText -Force
Export-PfxCertificate -Cert "cert:\CurrentUser\My\$($cert.Thumbprint)" -FilePath C:\temp\cert2.pfx -Password $password

# Upload to Key Vault
Import-AzureKeyVaultCertificate -VaultName noel-temp -Name cert2 -FilePath C:\temp\cert2.pfx -Password $password

В качестве альтернативы

Если вы используете поддерживаемый центр сертификации, вы даже можете настроить Key Vault для регистрации сертификатов от вашего имени.Нет утечки ключей!Для простоты политика в этих примерах будет настроена на создание самозаверяющих сертификатов из хранилища ключей.

# Have Key Vault create the certificate with a simple policy
$policy = New-AzureKeyVaultCertificatePolicy -SubjectName "CN=mycluster.southcentralus.cloudapp.azure.com" -IssuerName Self -ValidityInMonths 12
Add-AzureKeyVaultCertificate -VaultName noel-temp -Name cert1 -CertificatePolicy $policy

# Download the secret (private key information) associated with the cert
$secret = Get-AzureKeyVaultSecret -VaultName noel-temp -Name cert1
$secretBytes = [System.Convert]::FromBase64String($secret.SecretValueText)
[System.IO.File]::WriteAllBytes("C:\temp\cert1.pfx", $secretBytes)

# Import the certificate to CurrentUser\My
Import-PfxCertificate -FilePath C:\temp\cert1.pfx -CertStoreLocation cert:\CurrentUser\My -Exportable

Более подробную информацию можно получить по этим двум ссылкам:

Импорт сертификатов в хранилище ключей

Управление сертификатами через хранилище ключей Azure

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