Как использовать свой сертификат Azure KeyVault для подписи образа Docker для реестра контейнеров Azure с помощью PowerShell Azure AZ? - PullRequest
0 голосов
/ 19 июня 2020

Мы храним наши сертификаты в Azure Key Vault. Я могу успешно загрузить и записать файл PFX с одним из сертификатов с кодом, основанным на документации Microsoft Get-AzKeyVaultCertificate .

Одна проблема в том, что я не могу подписать Docker изображение с файлом PFX. Вместо этого мне нужно использовать файл PEM. Вся документация Docker, которую я видел, использует файлы PEM в качестве этого примера из Docker .com Content Trust

Я успешно сделал это в своей собственной подписке Azure с самозаверяющим сертификатом, созданным в моем хранилище ключей, а затем скачал сертификат как PEM с помощью интерфейса командной строки AZ. С PowerShell AZ, похоже, нет способа загрузить сертификат как PEM. Думаю, это оставляет мне возможность преобразовать PFX в PEM. Мне нужно сделать это как процесс DevOps, поэтому необходима повторяемость. Большинство примеров, которые я видел, указывают на то, что мне следует использовать openssl.exe. Я не хочу использовать openssl. Я бы хотел "родной" способ Powershell сделать это, если это возможно.

Ссылка от Microsoft показывает следующий код для загрузки сертификата и создания файла PFX:

$cert = Get-AzKeyVaultCertificate -VaultName "ContosoKV01" -Name "TestCert01"
$secret = Get-AzKeyVaultSecret -VaultName $vaultName -Name $cert.Name  
$secretByte = [Convert]::FromBase64String($secret.SecretValueText)  
$x509Cert = new-object System.Security.Cryptography.X509Certificates.X509Certificate2
$x509Cert.Import($secretByte, "", "Exportable,PersistKeySet")
$type = [System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx 
$pfxFileByte = $x509Cert.Export($type, $password)
[System.IO.File]::WriteAllBytes("KeyValt.pfx", $pfxFileByte)` 

Документация Docker касается только файлов PEM:

docker trust key load key.pem --name jeff
Loading key from "key.pem"...
Enter passphrase for new jeff key with ID 8ae710e:
Repeat passphrase for new jeff key with ID 8ae710e:
Successfully imported key from key.pem

Как я могу восполнить этот пробел?

...