应用程序网关 TLS 策略概述
Azure 应用程序网关允许你集中进行 TLS/SSL 证书管理,并减少后端服务器场的加密和解密开销。 这种集中式 TLS 处理还允许指定适合组织安全要求的中央 TLS 策略。 这有助于满足符合性要求以及安全指南和建议做法。
TLS 策略包括 TLS 协议版本控制和 TLS 握手期间会使用的密码套件和优先级顺序。 应用程序网关提供两种控制 TLS 策略的机制。 可使用预定义的策略或自定义策略。
用法和版本详细信息
- SSL 2.0 和 3.0 已针对所有应用程序网关禁用,且不可配置。
- 自定义 TLS 策略允许选择任何 TLS 协议作为网关的最低协议版本:TLSv1_0、TLSv1_1、TLSv1_2 或 TLSv1_3。
- 如果未选择 TLS 策略,则会根据用于创建该资源的 API 版本应用默认 TLS 策略。
- 支持 TLS v1.3 的 2022 预定义和 Customv2 策略仅适用于应用程序网关 V2 SKU(Standard_v2 或 WAF_v2)。
- 使用 2022 预定义策略或 Customv2 策略可增强整个网关的 SSL 安全性和性能状况(适用于 SSL 策略和 SSL 配置文件)。 因此,旧策略和新策略不能在网关上共存。 如果客户端需要较旧的 TLS 版本或加密法(例如 TLS v1.0),必须在整个网关上使用任一较旧的预定义策略或自定义策略。
- 用于连接的 TLS 密码套件也基于所使用的证书类型。 “从客户端到应用程序网关的连接”中使用的密码套件基于应用程序网关上的侦听器证书类型。 而用于建立“从应用程序网关到后端池的连接”的密码套件基于后端服务器提供的服务器证书类型。
预定义 TLS 策略
应用程序网关提供多个预定义的安全策略。 可以使用这些策略中的任意策略配置网关,以获得适当的安全性级别。 策略名称带有其配置年份和月份的批注 (AppGwSslPolicy<YYYYMMDD>)。 每个策略提供不同的 TLS 协议版本和/或密码套件。 这些预定义策略是在考虑 Microsoft 安全团队提供的最佳做法和建议的基础上配置的。 建议使用最新的 TLS 策略来确保最佳的 TLS 安全性。
下表列出了每个预定义策略支持的密码套件和最低协议版本。 密码套件的顺序决定了 TLS 协商期间的优先级顺序。 若要了解这些预定义策略的密码套件的确切顺序,可以参考 PowerShell、CLI、REST API,或门户中的“侦听器”边栏选项卡。
预定义策略名称 (AppGwSslPolicy<YYYYMMDD>) | 20150501 | 20170401 | 20170401S | 20220101 | 20220101S |
---|---|---|---|---|---|
最低协议版本 | 1.0 | 1.1 | 1.2 | 1.2 | 1.2 |
启用的协议版本 | 1.0 1.1 1.2 |
1.1 1.2 |
1.2 | 1.2 1.3 |
1.2 1.3 |
默认值 | 正确 (适用于 API 版本 < 2023-02-01) |
False | False | True (适用于 API 版本 >= 2023-02-01) |
False |
TLS_AES_128_GCM_SHA256 | ✗ | ✗ | ✗ | ✓ | ✓ |
TLS_AES_256_GCM_SHA384 | ✗ | ✗ | ✗ | ✓ | ✓ |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 | ✓ | ✓ | ✓ | ✓ | ✓ |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 | ✓ | ✓ | ✓ | ✓ | ✓ |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 | ✓ | ✗ | ✗ | ✓ | ✗ |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 | ✓ | ✗ | ✗ | ✓ | ✗ |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_RSA_WITH_AES_256_GCM_SHA384 | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_RSA_WITH_AES_128_GCM_SHA256 | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_RSA_WITH_AES_256_CBC_SHA256 | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_RSA_WITH_AES_128_CBC_SHA256 | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_RSA_WITH_AES_256_CBC_SHA | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_RSA_WITH_AES_128_CBC_SHA | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 | ✓ | ✓ | ✓ | ✓ | ✓ |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 | ✓ | ✓ | ✓ | ✓ | ✓ |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 | ✓ | ✓ | ✓ | ✓ | ✗ |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 | ✓ | ✓ | ✓ | ✓ | ✗ |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA | ✓ | ✓ | ✓ | ✗ | ✗ |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_RSA_WITH_3DES_EDE_CBC_SHA | ✓ | ✗ | ✗ | ✗ | ✗ |
TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA | ✓ | ✗ | ✗ | ✗ | ✗ |
默认 TLS 策略
如果未在应用程序网关资源配置中指定特定的 SSL 策略,则会应用默认 TLS 策略。 此默认策略的选择基于用于创建该网关的 API 版本。
- 对于 API 版本 2023-02-01 或更高版本,最低协议版本设置为 1.2(最高支持版本 1.3)。 使用这些 API 版本创建的网关将在资源配置中看到只读属性 defaultPredefinedSslPolicy:AppGwSslPolicy20220101。 此属性会定义要使用的默认 TLS 策略。
- 对于较旧的 API 版本 < 2023-02-01,最低协议版本设置为 1.0(最高支持版本 1.2),因为它们使用预定义策略 AppGwSslPolicy20150501 作为默认值。
如果默认 TLS 不符合要求,请选择其他预定义策略或使用自定义策略。
注意
即将推出对更新的默认 TLS 策略的 Azure PowerShell 和 CLI 支持。
自定义 TLS 策略
如果需要配置符合自己要求的 TLS 策略,可以使用自定义 TLS 策略。 通过自定义 TLS 策略,可以完全控制要支持的最低 TLS 协议版本和支持的密码套件及其优先级顺序。
注意
更新更强的加密法和 TLSv1.3 支持仅适用于 CustomV2 策略。 它提供增强的安全性和性能优势。
重要
- 如果在应用程序网关 v1 SKU(Standard 或 WAF)中使用自定义 SSL 策略,请确保将必需密码“TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256”添加到列表中。 在应用程序网关 v1 SKU 中启用指标和日志记录需要此密码。 对于应用程序网关 v2 SKU(Standard_v2 或 WAF_v2),此密码不是必需的。
- 对于 TLSv1.3,密码套件“TLS_AES_128_GCM_SHA256”和“TLS_AES_256_GCM_SHA384”是必需的。 使用 PowerShell 或 CLI 设置协议版本最低为 1.2 或 1.3 的 CustomV2 策略时,不需要显式提及这些信息。 因此,这些密码套件不会显示在“获取详细信息”的输出中,但门户除外。
密码套件
应用程序网关支持以下密码套件,你可以从中选择自定义策略。 密码套件的顺序决定了 TLS 协商期间的优先级顺序。
- TLS_AES_128_GCM_SHA256(仅适用于 Customv2)
- TLS_AES_256_GCM_SHA384(仅适用于 Customv2)
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_AES_256_GCM_SHA384
- TLS_RSA_WITH_AES_128_GCM_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA256
- TLS_RSA_WITH_AES_128_CBC_SHA256
- TLS_RSA_WITH_AES_256_CBC_SHA
- TLS_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
- TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
- TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA
- TLS_RSA_WITH_3DES_EDE_CBC_SHA
- TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA
限制
- 通常情况下,连接到后端服务器时,使用的协议的最低版本为 TLS v1.0,最高版本为 TLS v1.2。 因此,仅支持使用 TLS 版本 1.0、1.1 和 1.2 与后端服务器建立安全连接。
- 到目前为止,TLS 1.3 实现尚未启用“零往返时间(0-RTT)”功能。
- 不支持 TLS 会话(ID 或票证)恢复。
- 应用程序网关 v2 不支持以下 DHE 加密法。 即使在预定义策略中指定这些加密法,也不会使用它们来与客户端建立 TLS 连接。 建议不要使用 DHE 密码,而应使用安全快捷的 ECDHE 密码。
- TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_DHE_RSA_WITH_AES_128_CBC_SHA
- TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_DHE_RSA_WITH_AES_256_CBC_SHA
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
- TLS_DHE_DSS_WITH_AES_128_CBC_SHA
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
- TLS_DHE_DSS_WITH_AES_256_CBC_SHA
- 寻求“最大片段长度协商”支持的受限客户端必须使用更新的 2022 预定义或 Customv2 策略。
后续步骤
若要了解如何配置 TLS 策略,请参阅在应用程序网关上配置 TLS 策略版本和密码套件。