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

Azure API Manager如何将客户端证书传递至后端请求?

解决方案:Azure APIM验证客户端证书后将证书传递至后端TLS层

要实现你描述的流程(APIM验证客户端证书后,在TLS层将原客户端证书传递至后端),可结合APIM的证书验证策略和动态后端认证配置,具体如下:

核心思路

APIM在接收请求时终止TLS并完成客户端证书验证,随后在向后端发起新的TLS连接时,将原客户端证书作为APIM的客户端证书提交给后端,让后端在TLS握手阶段获取该证书并完成二次认证。

具体配置步骤

1. 启用APIM的客户端证书验证

在APIM的API入站策略中添加证书验证规则,确保只有合法证书的请求能通过:

<inbound>
    <!-- 验证客户端证书的链完整性与有效性 -->
    <validate-client-certificate validateCertificateChain="true" validateCertificateName="true" />
    <!-- 将客户端证书存储到变量,供后端策略调用 -->
    <set-variable name="originalClientCert" value="@(context.Request.Certificate)" />
</inbound>

2. 配置APIM向后端传递证书

在后端策略中,指定使用存储的原客户端证书作为APIM与后端建立TLS连接的客户端证书:

<backend>
    <!-- 引用存储的原客户端证书,用于后端TLS双向认证 -->
    <authentication-certificate certificate-variable-name="originalClientCert" />
</backend>

3. 后端服务器配置

确保后端服务器已启用双向TLS认证,要求客户端(即APIM)提供证书。此时后端在TLS握手阶段会收到原客户端的证书,可直接进行二次认证。

关键注意事项

  • APIM仅能获取客户端证书的公钥部分,无法获取私钥。因此后端验证时,仅能校验证书的有效性、链完整性及证书属性(如主题、指纹),私钥签名验证已由APIM完成。
  • 若客户端证书由私有CA签发,需将该CA证书上传至APIM的受信任根证书库,确保APIM能完成证书验证。
  • 需保证APIM与后端信任的根证书一致,否则后端可能无法验证证书链。

替代方案(若上述方式受限)

如果因私钥限制无法通过TLS层传递,可考虑:

  • 后端信任APIM的证书,仅由APIM完成客户端证书验证,后端只校验APIM身份(简化流程,但失去后端二次认证能力)。
  • 用set-header策略将证书DER编码内容传入自定义头部(如X-Client-Certificate),后端从头部提取证书验证——这是行业常用的证书传递方式,虽你明确排斥,但仍是可行备选。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:57:35