使用ARM模板向Key Vault添加自签名证书是否受支持?
好问题!目前ARM模板本身并不直接支持在部署流程中生成并添加全新的自签名证书到Key Vault。Key Vault的ARM资源类型(比如Microsoft.KeyVault/vaults/certificates)仅能用来导入已预先存在的证书文件或证书数据,没办法在ARM部署的过程中自动完成自签名证书的生成步骤。
不过别担心,有几个成熟的替代方案可以帮你实现“通过ARM模板部署Key Vault并自动添加自签名证书”的需求:
可行的替代方案
1. 嵌入ARM部署脚本(Deployment Scripts)
你可以在ARM模板中加入Microsoft.Resources/deploymentScripts资源,通过PowerShell或Bash脚本调用Azure工具链来生成并导入自签名证书,完全整合到ARM的部署流程里。
举个Azure CLI脚本的例子,在部署脚本中执行以下命令就能生成带默认策略的自签名证书并存入Key Vault:
az keyvault certificate create \ --vault-name "[parameters('keyVaultName')]" \ --name "[parameters('certificateName')]" \ --policy "$(az keyvault certificate get-default-policy)"
这种方式相当于把动态生成证书的逻辑嵌入到ARM部署流程中,部署完成后Vault里就有你需要的自签名证书了。
2. 预先生成证书再通过ARM导入
如果不需要动态生成,你可以先在本地用工具(比如OpenSSL、PowerShell的New-SelfSignedCertificate命令)生成自签名证书,然后将证书的PFX文件内容(带密码)作为参数传入ARM模板,通过Microsoft.KeyVault/vaults/certificates资源导入到Key Vault中。
3. 结合后续自动化流程
如果是批量或长期运维场景,也可以先通过ARM模板部署好Key Vault,再用Azure Automation Runbook、Logic Apps等工具触发后续的自签名证书生成和导入操作,实现端到端的自动化。
总的来说,虽然ARM模板本身不直接支持生成自签名证书,但通过部署脚本的方式可以完美弥补这个缺口,实现你想要的一站式部署目标。
内容的提问来源于stack exchange,提问作者V. G.

