用户在 Azure Application Gateway 上配置端到端 SSL证书加密(官方称为端到端 TLS 加密),可以确保从客户端到网关、再到后端服务器的整条数据链路都经过加密,是保障应用安全的关键一步。
核心概念:端到端 TLS 的工作原理
端到端 TLS 加密涉及两段独立的 SSL/TLS 连接,使用两套不同的证书:
1. 客户端到网关的连接 (Client ↔ Gateway):用户在浏览器(客户端)和网关的公网 IP 之间建立加密连接。此连接使用你上传到网关 Listener (侦听器) 的 SSL 证书,这个过程也被称为“SSL 终止”[reference:0]。
2. 网关到后端的连接 (Gateway ↔ Backend):网关在收到客户端请求并解密后,会作为新的客户端,与后端服务器建立一个新的加密连接。此连接使用后端服务器的证书,网关需要提前信任该证书的公钥或根证书[reference:1]。
准备工作:所需证书
在开始配置前,请确保准备好以下证书:
组件 所需证书类型 格式要求 核心说
Application Gateway (前端 Listener) SSL 证书 (含私钥) | .pfx (个人信息交换文件) | 用于客户端与网关之间的加密和解密[reference:2]
后端服务器 SSL 证书 (公钥或根证书) | .cer (Base-64 编码 X.509格式) | 用于网关验证后端服务器的身份[reference:3]
生产环境建议:生产环境中,请务必使用由受信任的证书颁发机构 (CA) 签名的证书。自签名证书仅适用于测试环境[reference:4]。
配置步骤(Azure 门户)
以下是通过 Azure 门户配置端到端 TLS 加密的主要步骤:
1. 创建 Application Gateway 并启用 TLS 终止
在 Azure 门户中新建 Application Gateway,在“侦听器”配置选项卡中,将“协议”设置为
HTTPS,并上传你的 .pfx 格式的前端证书[reference:5]。
2. 配置后端 HTTP 设置
在网关创建完成后,进入其“HTTP 设置”页面,选择默认或新建一个设置。
将“协议”改为 HTTPS。然后,根据你的网关SKU,在“后端身份验证证书”或“受信任的根证书”下,上传后端服务器的 .cer 证书文件[reference:6][reference:7]。
3. 配置健康探测
由于后端使用 HTTPS,你需要为网关配置一个健康探测。在“运行状况探测”页面新建一个探测,将其“协议”也设置为 HTTPS,以确保网关能正确检查后端健康状态[reference:8][reference:9]。
使用 PowerShell 实现自动化
对于需要自动化部署的场景,可以使用 PowerShell 脚本来完成配置。以下是一个简化示例,展示了关键步骤:
powershell
# 1. 登录 Azure
Connect-AzAccount
# 2. 创建资源组和虚拟网络
$resourceGroup = "myResourceGroup"
$location = "China North 2"
New-AzResourceGroup -Name $resourceGroup -Location $location
# 3. 准备前端证书
$certPath = "C:\path\to\your\gateway_certificate.pfx"
$certSecret = ConvertTo-SecureString -String "YourPassword" -AsPlainText -Force
$frontendCert = New-AzApplicationGatewaySslCertificate -Name "frontendCert" -CertificateFile $certPath -Password $certSecret
# 4. 创建网关配置(网络配置、前端IP、侦听器等)
# ... 此处省略具体的网关参数配置代码 ...
# 5. 创建后端 HTTP 设置并上传后端证书
$backendCertPath = "C:\path\to\your\backend_cert.cer"
$backendCert = New-AzApplicationGatewayTrustedRootCertificate -Name "backendRootCert" -CertificateFile $backendCertPath
$backendSetting = New-AzApplicationGatewayBackendHttpSetting -Name "backendHttpsSetting" -Port 443 -Protocol Https -CookieBasedAffinity Disabled -RequestTimeout 20 -TrustedRootCertificate $backendCert
# 6. 创建网关
New-AzApplicationGateway -Name "myAppGateway" -ResourceGroupName $resourceGroup -Location $location ...
更详细的 PowerShell 配置脚本和完整示例,请参考官方文档:Configure end-to-end TLS by using Application Gateway with PowerShell[reference:10]。
进阶配置与最佳实践
除了基本配置,以下措施可以进一步提升安全性:
强制 HTTP 重定向到 HTTPS
在网关中配置重定向规则,将所有 HTTP 流量(端口80)自动转发到 HTTPS(端口443)。这是一个简单且强制性的安全策略[reference:11]。
配置 TLS 策略
TLS 策略用于控制 TLS 协议的版本和加密套件。推荐使用 2022 预定义策略 或 Custom v2 策略,以获得更强的安全性和性能[reference:12]。
安全警示:根据 Azure 官方公告,从 2025 年 8 月 31 日起,Azure Application Gateway 将终止对 TLS 1.0 和 1.1 的支持。所有客户端和后端服务器都必须使用 TLS 1.2 或更高版本[reference:13][reference:14]。请务必检查并更新你的配置。
管理证书的更多选择
Azure Key Vault 集成:对于生产环境,强烈建议将 SSL 证书存储在 Azure Key Vault 中,并让 Application Gateway 通过托管身份来引用它。这可以集中管理、简化证书轮换并提高安全性[reference:15]。
侦听器级别的 SSL 策略:如果使用 v2 SKU,可以为不同的侦听器配置不同的 SSL 策略,实现更精细的安全控制[reference:16]。
常见问题与排查
问题现象 可能原因 解决方法
后端健康状态为“不正常” 后端证书的公用名 (CN) 与网关配置的后端设置中的主机名不匹配 确保后端服务器证书的 CN(或其 SAN)与你配置的后端 HTTP 设置中的“主机名”字段一致[reference:17]。
后端健康状态为“不正常” 后端服务器的根证书未正确上传到网关,或上传了错误的证书 从后端服务器证书中导出正确的根证书(.cer格式),并在网关的“后端 HTTP 设置”中重新上传[reference:18]。
访问网关时出现证书警告 前端侦听器上绑定的证书不受客户端信任 确保前端侦听器上绑定的是由公共信任的 CA 签发的证书。对于测试环境,需手动将自签名证书安装到客户端的“受信任的根证书颁发机构”存储区。
无法通过 HTTPS 访问后端 后端服务器的防火墙或网络安全组 (NSG) 未允许来自网关子网的 HTTPS 流量
检查后端服务器的 NSG 或操作系统防火墙规则,确保允许来自 Application Gateway 子网的入站 HTTPS (443) 流量。
配置端到端SSL证书加密是保障应用安全的关键步骤。如果在操作中遇到其他问题,可以查阅 Azure 官方文档或提供具体错误信息以便进一步排查。