使用 Azure CLI 和 Keyvault 将 SSL 证书绑定到应用服务

Binding SSL certificate to App service using Azure CLI and Keyvault

我正在尝试使用 Azure CLI 配置存储在 Azure KeyVault 中的 Azure 应用服务 SSL 证书。我是 Azure CLI 的新手,无法找到执行此操作的完整示例代码集。我找到了各个命令的文档/示例,但无法将它们链接在一起。肯定会感激一些 assitance/guidance,因为我觉得这是一种常见的情况。

起初,我认为这将是一个简单的 'linking' 类型的命令。证书已上传到 keyvault,因此 Azure 应用服务,去获取它们,这是 $pfxPassword。

看起来这不可能。我发现一些文档表明您需要从 keyvault 下载证书然后上传。

我花了一点时间才意识到您没有为此使用 az keyvault 证书...您需要使用 az secret download。

然后我找到了一些关于如何上传证书、获取指纹以及将证书绑定到应用服务的其他命令。

我将这三个命令链接在一起,但无法正常工作。

#download the cert
az keyvault secret download --file $fileName --vault-name $vaultName --name $certName;

#upload the cert and get the thumbprint
$thumbprint=az webapp config ssl upload --certificate-file $fileName --certificate-password $pfxPassword --name $site_name --resource-group $ResourceGroupName --query thumbprint --output tsv

#bind the uploaded cert to the app service.
az webapp config ssl bind --certificate-thumbprint $thumbprint --ssl-type SNI --name $site_name --resource-group $ResourceGroupName

我可以确认第一个命令正在下载证书。 (过了一会儿,我能够弄清楚导入我的 win10 开发机器的问题——即使证书是用密码上传到 keyvault 中的,下载它们也会去掉密码。)。

不幸的是,第二个命令(上传并获取指纹)似乎需要密码。

'correct' 的方法是什么?

感谢您的guidance/advice。

根据我的测试,当我们使用 Azure CLI 从 Azure Key Vault 下载证书作为 pfx 文件时,它有一个空白密码。所以当我们使用CLI将pfx文件上传到Azure web app时,我们可以使用如下命令

az webapp config ssl upload --certificate-file "<pfx file name>"  --name "<web name>" --resource-group "<group name>"  --certificate-password "" --query thumbprint --output tsv
az login

# upload certificate to Azure key vault
az keyvault certificate import --file "E:\Cert\P2SChildCert.pfx" --password "" --name "test1234" --vault-name "testkey08"

# download certificate as pfx file
az keyvault secret download --file "test2.pfx" --vault-name "testkey08" --name "test1234" --encoding base64

# upload the pfx file to Azue web app
az webapp config ssl upload --certificate-file "test2.pfx"  --name "andywebsite" --resource-group "andywebbot"  --certificate-password "" --query thumbprint --output tsv

此外,如果您的证书已经存储在Azure key vault中,我们可以直接通过Azure Portal将其导入到Azure web app中。