You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Azure CLI向Azure Front Door上传自定义TLS证书并通过定时Bash脚本自动维护证书更新

如何使用Azure CLI向Azure Front Door上传自定义TLS证书并通过定时Bash脚本自动维护证书更新

嗨,我来帮你梳理下用Bash脚本结合Azure CLI自动维护Azure Front Door自定义TLS证书的流程~你之前提到的应用服务器两步操作思路没问题,但Front Door的证书管理逻辑有点不一样,它依赖Azure Key Vault来存储证书,我给你拆解成具体可执行的步骤:

前置准备

  • 确保你已经安装并登录了Azure CLI,且拥有对应资源(Front Door、Key Vault)的操作权限
  • 准备好更新后的PFX格式证书文件,以及证书密码
  • 确认你的Key Vault已经启用了软删除和清除保护(这是Front Door的硬性要求)

具体脚本步骤

1. 将新证书导入Azure Key Vault

Front Door不能直接上传证书,必须先把证书存到Key Vault里:

# 替换成你的变量
keyVaultName="你的Key Vault名称"
certificateName="证书在Vault中的标识名称"
domain="你的域名"
pfxPass="PFX证书密码"

# 导入证书到Key Vault
az keyvault certificate import --vault-name "$keyVaultName" --name "$certificateName" --file "$domain.pfx" --password "$pfxPass"

2. 获取证书的完整资源ID

接下来需要拿到刚导入证书的唯一ID,用来关联到Front Door:

certificateId=$(az keyvault certificate show --vault-name "$keyVaultName" --name "$certificateName" --query id --output tsv)

3. 将证书绑定到Front Door的自定义域名

最后一步就是把Key Vault里的证书关联到Front Door的目标域名上:

# 替换成你的Front Door相关变量
subscription="你的订阅ID"
resourceGroup="资源组名称"
frontDoorName="Front Door实例名称"
customDomainName="Front Door中配置的自定义域名"

# 切换到目标订阅(如果需要的话)
az account set --subscription "$subscription"

# 更新域名的TLS证书配置
az network front-door custom-domain update \
  --front-door-name "$frontDoorName" \
  --resource-group "$resourceGroup" \
  --name "$customDomainName" \
  --certificate-source KeyVault \
  --certificate-id "$certificateId"

完整定时脚本示例

把上面的步骤整合起来,加上错误处理,就是一个可以定时运行的脚本:

#!/bin/bash

# -------------------------- 配置区 --------------------------
subscription="你的订阅ID"
resourceGroup="你的资源组名称"
frontDoorName="你的Front Door实例名称"
keyVaultName="你的Key Vault名称"
certificateName="Key Vault中的证书名称"
domain="你的域名(对应PFX文件名)"
pfxPass="PFX证书密码"
customDomainName="Front Door里的自定义域名"
# -----------------------------------------------------------

# 切换到目标订阅
az account set --subscription "$subscription"

# 导入证书到Key Vault
echo "开始导入证书到Key Vault..."
az keyvault certificate import --vault-name "$keyVaultName" --name "$certificateName" --file "$domain.pfx" --password "$pfxPass"
if [ $? -ne 0 ]; then
  echo "证书导入失败,请检查Key Vault权限或证书文件!"
  exit 1
fi

# 获取证书ID
echo "获取证书资源ID..."
certificateId=$(az keyvault certificate show --vault-name "$keyVaultName" --name "$certificateName" --query id --output tsv)
if [ -z "$certificateId" ]; then
  echo "无法获取证书ID,请检查证书是否导入成功!"
  exit 1
fi

# 更新Front Door域名证书
echo "更新Front Door自定义域名证书..."
az network front-door custom-domain update \
  --front-door-name "$frontDoorName" \
  --resource-group "$resourceGroup" \
  --name "$customDomainName" \
  --certificate-source KeyVault \
  --certificate-id "$certificateId"

if [ $? -eq 0 ]; then
  echo "✅ 证书更新完成!"
else
  echo "❌ 证书更新失败,请检查Front Door配置或权限!"
  exit 1
fi

定时运行设置

  • 如果是在Linux服务器上,你可以用crontab来设置定时任务,比如每月运行一次:
    # 编辑crontab
    crontab -e
    # 添加一行(每月1号凌晨2点运行脚本)
    0 2 1 * * /path/to/your/cert-update-script.sh >> /var/log/cert-update.log 2>&1
    
  • 如果想在云端托管,推荐用Azure Automation Runbook,它可以直接在Azure环境中运行脚本,还自带监控和告警功能。

注意事项

  • 运行脚本的身份(比如服务主体)需要拥有Key Vault的Certificate Import权限,以及Front Door的Custom Domain Update权限
  • Key Vault需要允许Front Door访问:可以在Key Vault的防火墙设置中启用“允许受信任的Microsoft服务访问此密钥保管库”
  • 证书必须是PFX格式,包含完整的私钥,有效期至少保留30天(Front Door的要求)

备注:内容来源于stack exchange,提问作者The Fabio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 10:53:04