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

如何为Azure容器实例绑定SSL证书以启用443端口访问

绑定SSL证书到Azure容器实例(Linux)实现443端口访问

嗨,我来帮你一步步搞定把SSL证书绑定到已运行的Linux容器实例这件事,咱们分步骤来:

一、准备工作

首先得确保你的SSL证书符合ACI的要求,并且存放在Azure Key Vault里:

  • 转换证书格式:ACI只支持PFX格式的证书,如果你的证书是PEM格式(比如.crt和.key文件),可以用openssl转换成PFX:
    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
    
    执行时会要求你设置一个PFX密码,记好这个密码,后面会用到。
  • 上传证书到Azure Key Vault:
    1. 如果还没有Key Vault,先创建一个:
      az keyvault create --name <你的Key Vault名称> --resource-group <资源组名> --location <区域,比如eastus>
      
    2. 上传PFX证书到Key Vault:
      az keyvault certificate import --vault-name <Key Vault名称> --name <证书在KV里的名称> --file certificate.pfx --password <你的PFX密码>
      
    3. 给Key Vault启用“允许Azure资源部署访问”:在Key Vault的「访问策略」里,添加一条策略,授予容器实例的系统分配身份(或者你指定的服务主体)“获取”证书的权限;如果你的账号有足够权限,后续CLI操作也会自动处理这个权限配置。

二、更新现有容器实例绑定证书

如果你想直接在已运行的容器实例上修改,用Azure CLI的az container update命令:

az container update \
  --resource-group <你的资源组名> \
  --name <现有容器实例名> \
  --ports 80 443 \
  --ip-address Public \
  --ssl-certificate <Key Vault里的证书名称> \
  --ssl-certificate-key-vault <Key Vault的资源ID> \
  --ssl-certificate-key-vault-password <你的PFX密码>

参数说明:

  • --ports 80 443:保留原有的80端口,同时开启443端口
  • --ssl-certificate:Key Vault中存储的证书名称
  • --ssl-certificate-key-vault:Key Vault的资源ID,可以用az keyvault show --name <KV名称> --query id -o tsv获取

三、(可选)重新创建容器实例绑定证书

如果更新遇到问题,或者你想重新部署,用az container create命令,加上证书相关参数:

az container create \
  --resource-group <你的资源组名> \
  --name <新的容器实例名> \
  --image <ACR镜像地址,比如youracr.azurecr.io/nodeapp:latest> \
  --registry-login-server <ACR登录服务器,比如youracr.azurecr.io> \
  --registry-username <ACR用户名> \
  --registry-password <ACR密码> \
  --ports 80 443 \
  --ip-address Public \
  --dns-name-label <你的DNS前缀,比如my-node-app> \
  --ssl-certificate <Key Vault证书名> \
  --ssl-certificate-key-vault <Key Vault资源ID> \
  --ssl-certificate-key-vault-password <PFX密码>

这里加了--dns-name-label,可以生成一个固定的DNS名称(比如my-node-app.eastus.azurecontainer.io),避免动态IP变化带来的麻烦。

四、验证配置

部署完成后,做以下检查:

  1. 查看容器实例状态:
    az container show --resource-group <资源组名> --name <容器实例名> --query "{status:instanceView.state, ip:ipAddress.ip, fqdn:ipAddress.fqdn}" -o table
    
  2. 访问https://<容器实例IP>或者https://<你的FQDN>,确认443端口正常访问,浏览器显示证书有效。

重要注意事项

  • SSL终止在ACI层:你的Node.js应用不需要修改,继续监听80端口即可。ACI会在443端口处理SSL加密,然后把明文请求转发到容器的80端口。
  • 静态IP设置:如果需要固定IP,在创建/更新ACI时加上--ip-address Public --dns-name-label <前缀>,这样会分配一个静态IP和FQDN。
  • 权限问题:如果ACI无法读取Key Vault的证书,检查Key Vault的访问策略,确保容器实例的身份有“获取”证书的权限。

内容的提问来源于stack exchange,提问作者Bala krishna

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:49:12