Azure应用网关mTLS服务器变量为空,无法传递客户端证书至APIM
问题原因排查与解决方向
针对你遇到的Azure应用网关无法将客户端证书传递至APIM的问题,以下是几个核心排查点:
网关mTLS验证模式未设为“必需”
如果网关的HTTPS监听规则里客户端证书验证是“可选”模式,即便客户端提交了证书,网关也不会提取证书内容填充到client_certificate等服务器变量中。必须将验证模式改为“必需”,网关才会强制校验客户端证书并生成对应的服务器变量。重写规则的变量引用格式错误
确认重写规则中使用的是{client_certificate}而非带var_前缀的变体。Azure应用网关的mTLS相关服务器变量直接用{变量名}格式,不需要额外前缀。同时检查重写动作是否为“设置请求头”,目标头名称(如X-ARR-ClientCert)有没有拼写错误。应用网关SKU版本不支持
v1 SKU的应用网关不支持将mTLS客户端证书通过服务器变量传递的功能,必须使用v2 SKU。如果你的网关还是v1版本,升级到v2后再配置重写规则即可解决。APIM入站策略意外移除了目标头
检查APIM的入站策略,确认没有通过<remove-header>或<set-header>策略删除X-ARR-ClientCert头。默认情况下APIM不会过滤这个头,但自定义策略可能导致头被意外移除。重写规则的执行阶段不正确
确保重写规则是在“请求路由到后端之前”的阶段执行,只有在这个阶段,网关才能获取到客户端证书变量并注入到请求头中。如果规则设置在其他阶段,可能无法正确获取变量值。
内容的提问来源于stack exchange,提问作者CM231
相关产品推荐
相关产品推荐

