如何配置Azure应用网关使用客户端证书向后端VM认证?
Azure应用网关向后端VM发送客户端证书实现双向认证方案
Azure应用网关支持通过客户端证书认证向后端服务器发起请求,以此实现后端VM仅接受来自应用网关的连接。你之前的操作误区在于配置了后端受信任根证书(这是应用网关验证后端服务器证书用的),而正确的配置应该是让应用网关自身携带客户端证书访问后端。以下是具体步骤:
1. 准备符合要求的客户端证书
- 证书必须是PFX格式,包含完整的私钥,且设置了密码。
- 该证书需要被后端VM信任:可以是VM已信任的根CA签发的客户端证书,或者后续将证书直接导入VM的受信任客户端证书存储。
2. 将客户端证书上传至应用网关
门户操作
- 进入Azure应用网关的证书页面,选择客户端证书选项卡,点击「上传」。
- 选择准备好的PFX文件,输入证书密码,设置证书名称后完成上传。
CLI操作
az network application-gateway client-cert create \ --gateway-name <你的应用网关名称> \ --resource-group <所属资源组名称> \ --name <证书显示名称> \ --cert-file <本地PFX文件路径> \ --password <证书密码>
3. 配置后端HTTPS设置
- 进入应用网关的后端设置页面,新建或编辑目标HTTPS后端设置:
- 端口设置为后端VM监听SSL的端口(通常是443)。
- 找到客户端认证区域,勾选「使用客户端证书」,并选择刚才上传的客户端证书。
- (可选)如果后端VM的SSL证书是自签或私有CA签发,需在后端证书验证中上传VM的根证书到应用网关的「后端受信任根证书」,确保应用网关能验证后端服务器的证书;若为公共CA签发证书,可直接开启验证。
4. 配置后端VM的双向SSL策略
根据VM上的Web服务器类型配置:
IIS服务器
- 为站点配置SSL绑定,在「SSL设置」中勾选「要求SSL」和「要求客户端证书」。
- 在「受信任的根证书颁发机构」中添加客户端证书对应的根CA,确保VM信任该客户端证书。
Nginx服务器
- 在Nginx的server配置块中添加以下指令:
ssl_verify_client on; ssl_trusted_certificate /path/to/trusted-ca-cert.pem; # 应用网关客户端证书的根CA证书文件
- 确保Nginx已启用SSL模块,且配置了正确的服务器证书。
5. 验证配置有效性
- 向应用网关的公共IP/域名发送请求,检查是否能成功访问后端VM。
- 查看后端VM的Web服务器日志,确认请求携带的客户端证书为应用网关上传的那一张。
- 若健康探针失败,需确保探针使用的后端设置也关联了该客户端证书(探针会模拟请求,同样需要携带证书)。
内容的提问来源于stack exchange,提问作者Hari Narayanan
相关产品推荐
相关产品推荐

