用户在  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  官方文档或提供具体错误信息以便进一步排查。