У меня есть самозаверяющий сертификат, который я пытаюсь импортировать в Azure Key Vault Certificate, и у меня возникают проблемы. Я делаю это не с помощью команды Import-AzKeyVaultCertificate
, а с помощью API.
Мне удалось создать Ключ через маршрут API, но я не могу импортировать сертификат. К вашему сведению, это также работает, когда я делаю это по конвейеру Azure DevOps, поэтому я знаю, что принцип обслуживания не проблема.
Вот как я создаю сертификат (локально через PowerShell - все примеры здесь будет локальным, а не для Azure DevOps):
$certroopath = "C:\cert"
$location = "eastus"
$vmName = "arsmpvm"
$certname = "$vmName"
$certpassword = "P@ssw0rd1234"
$cert = New-SelfSignedCertificate -DnsName "$certname" -CertStoreLocation cert:\LocalMachine\My
$pwd = ConvertTo-SecureString -String $certpassword -Force -AsPlainText
$certwithThumb = "cert:\localMachine\my\"+$cert.Thumbprint
$filepath = "$certroopath\$certname.pfx"
Export-PfxCertificate -cert $certwithThumb -FilePath $filepath -Password $pwd
Remove-Item -Path $certwithThumb
Вот как я импортирую сертификат через операцию POST:
$pfxcontent = Get-Content 'C:\cert\arsmpvm.pfx' -Encoding Byte
$base64Stringpfxcontent = [System.Convert]::ToBase64String($pfxcontent)
#The payload
$json_new = '{
"value": "$base64Stringpfxcontent",
"pwd": "$pwd",
"policy": {
"key_props": {
"exportable": true,
"kty": "RSA",
"key_size": 2048,
"reuse_key": false
},
"secret_props": {
"contentType": "application/x-pem-file"
}
}
}'
$header = @{Authorization = "Bearer " + $token.access_token}
Invoke-RestMethod -Method Post -Uri "https://$kvname.vault.azure.net/certificates/$certname/import?api-version=7.0" -Body $json_new -Headers $header -ContentType "application/json"
Вот ошибка, которую я выдавал: Invoke-RestMethod : {"error":{"code":"BadParameter","message":"The specified PEM X.509 certificate content is in an unexpected format. Please check if certificate is in valid PEM format."}}
Даже если я заменю значение $base64Stringpfxcontent
(в $json_new
) на его содержимое, которое похоже на строку символов 3500, я получаю ту же проблему. Даже если я изменю $pwd
на его жестко запрограммированное значение, равное P@ssw0rd1234
, я получу ту же ошибку.
Ссылка взята с: https://docs.microsoft.com/en-us/rest/api/keyvault/importcertificate/importcertificate
Скриншот ошибки: