Azure App Service访问双向TLS认证服务时公钥证书安装问题
证书部署位置选型
先明确核心逻辑:证书装在哪取决于哪一层直接和外部mTLS服务建立TLS连接,Azure托管服务没有持久化的系统存储供你随意安装证书,和传统本地服务器的操作逻辑有区别,分场景选位置即可:
- 若App Service直接发起对外部mTLS服务的请求,中间没有代理层:不需要用Application Gateway,证书直接上传到App Service的TLS/SSL配置即可,Key Vault仅作为证书的安全托管存储,不直接参与运行时的TLS握手。
- 若你用Application Gateway作为出站代理,所有发往外部mTLS服务的流量都经过Application Gateway转发:证书直接配置在Application Gateway的后端认证规则里即可,同样可以关联Key Vault同步证书,方便后续轮换。
- 注意:仅持有公钥证书无法完成mTLS客户端认证,你需要从服务提供方拿到包含对应私钥的客户端证书(通常为PFX/P12格式),同时拿到证书导入密码,否则后续握手一定会失败。
App Service 出站mTLS配置流程
App Service不会自动识别证书位置,也不会自动在出站请求里携带客户端证书,需要按以下步骤显式配置:
- 上传证书
- 方式一(直接上传):进入App Service门户页,找到「TLS/SSL设置」→「私钥证书(.pfx)」,上传带私钥的客户端证书,复制保存生成的证书指纹(Thumbprint)。
- 方式二(Key Vault同步):先给App Service开启系统分配托管标识,给该标识授予Key Vault的「证书获取」权限,回到上述TLS/SSL设置页选择「从Key Vault导入」,选中对应证书即可,后续Key Vault侧更新证书版本,App Service会自动同步,不需要手动重新上传。
- 配置运行时加载证书
App Service默认不会把上传的证书加载到应用运行环境,需要添加应用设置告知平台要加载的证书:- Windows部署的App Service:新增应用设置
WEBSITE_LOAD_CERTIFICATES,值填之前保存的证书指纹,需要加载所有已上传证书则填*。配置生效后,证书会被自动注入到当前应用实例的CurrentUser\My证书存储路径下。 - Linux部署的App Service:同样配置上述
WEBSITE_LOAD_CERTIFICATES应用设置,证书会被挂载到实例内的/var/ssl/private/路径下,文件名为<证书指纹>.p12。
- Windows部署的App Service:新增应用设置
- 代码层面绑定证书
平台仅负责把证书放到运行时可访问的位置,不会自动替你把证书附加到出站请求里:你需要在发起HTTPS请求的代码逻辑中,从对应存储位置读取证书,将其绑定到HTTP客户端的客户端证书参数上,再向外部mTLS服务发起请求,才能完成双向TLS握手。
用Application Gateway处理mTLS的适用场景
如果你不想在业务代码里处理证书加载、绑定的逻辑,或者名下多个App Service都需要访问同一个要求mTLS的外部服务,可以给App Service配置虚拟网络集成,将发往外部mTLS服务的流量路由到Application Gateway,在Application Gateway的后端HTTP设置中开启「客户端证书认证」,上传对应客户端证书即可。这种模式下Application Gateway会在和外部服务建连时自动出示证书,App Service侧不需要做任何证书相关配置。
内容的提问来源于stack exchange,提问作者mech9t5
相关产品推荐
相关产品推荐

