使用自定义脚本扩展从Azure Key Vault下载证书

时间:2019-06-04 04:55:58

标签: azure azure-keyvault

我正在使用python创建虚拟机,并使用自定义脚本扩展名将证书下载到虚拟机中,然后将其保存在本地计算机证书受信任的根证书中。

我唯一的查询是在网络上,可用于从Azure Key Vault下载证书的资源非常有限。每个人都建议登录,然后使用cmdlet下载,这对于Custom Script Extension不适用。

下面是示例powershell cmdlet,要求登录并下载证书。但是,由于我们正在运行自定义脚本扩展,因此我们无法进行身份验证。

$vaultName = "YOUR-KEYVAULT-NAME"
$certificateName = "YOUR-CERTIFICATE-NAME"
$pfxPath = [Environment]::GetFolderPath("Desktop") + "\$certificateName.pfx"
$password = "YOUR-CERTIFICATE-PASSWORD"
$pfxSecret = Get-AzureKeyVaultSecret -VaultName $vaultName -Name $certificateName
$pfxUnprotectedBytes = [Convert]::FromBase64String($pfxSecret.SecretValueText)
$pfx = New-Object Security.Cryptography.X509Certificates.X509Certificate2
$pfx.Import($pfxUnprotectedBytes, $null, [Security.Cryptography.X509Certificates.X509KeyStorageFlags]::Exportable)
$pfxProtectedBytes = $pfx.Export([Security.Cryptography.X509Certificates.X509ContentType]::Pkcs12, $password)
[IO.File]::WriteAllBytes($pfxPath, $pfxProtectedBytes)

1 个答案:

答案 0 :(得分:1)

您可以在azure广告中创建一个AD App,然后使用服务主体以非交互方式登录。

请按照以下步骤操作:

1。Create an Azure Active Directory applicationcreate a secret(针对该应用),请您自己和get values for signing in保存机密。

2。在门户中导航至密钥仓库-> Access policies-> Add new-> Select principal(如果创建AD App,则只需搜索AD A​​pp的名称即可,它将在您的租户中自动创建一个服务主体)->选择正确的Secret/Key/Certificate permissions(这取决于您要执行的操作,在这种情况下,您需要在{{1}中选择Get },也可以轻松选择所有内容)->单击Secret permissions-> OK

3。然后,服务主体将具有运行Save的权限,您只需要使用它即可以非交互方式登录。

Get-AzureKeyVaultSecret