一般情况下,我们在Azure中对外发布应用时,都会选择使用Application Gateway来进行发布。选择Application Gateway发布应用的原因不仅仅是因为他内置集成WAF,还因为使用Azure Application Gateway我们可以集中管理TLS/SSL证书,从而减少后端服务器场的加解密开销。这种集中式的TLS处理还允许我们指定符合组织安全要求的*TLS策略,进而帮助我们来满足合规性要求以及安全主责和推荐做法。
TLS 是一种标准加密协议,可确保 Internet 上客户端和服务之间的隐私和数据完整性。目前 Appliction Gateway 默认使用 TLS 1.2,但仍然支持 TLS 1.0 和 TLS 1.1 以实现向后兼容性。对于想要实施更严格的安全措施的的企业来说,可以通过TLS策略来控制支持的TLS版本。TLS 策略包括对 TLS 协议版本的控制以及密码套件以及在 TLS 握手期间使用密码的顺序。应用程序网关提供两种机制来控制 TLS 策略。我们可以使用预定义策略或自定义策略。
预定义TLS策略
应用程序网关提供多种预定义的安全策略。可以使用这些策略中的任何一个配置网关以获得适当的安全级别。策略名称由配置它们的年份和月份注释 (AppGwSslPolicy)。每个策略提供不同的 TLS 协议版本和/或密码套件。这些预定义策略的配置考虑了 Microsoft 安全团队的最佳做法和建议。我们建议使用最新的 TLS 策略以确保最佳的 TLS 安全性。
下表显示了密码套件列表和每个预定义策略的最低协议版本支持。密码套件的排序决定了 TLS 协商期间的优先级顺序。要了解这些预定义策略的密码套件的确切顺序,可以参考 PowerShell、CLI、REST API 或门户中的侦听器刀片。
预定义策略名称 (AppGwSslPolicy) |
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 |
默认 |
真的 |
错误的 |
错误的 |
错误的 |
错误的 |
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策略
如果预定义的TLS策略不能满足企业的使用需求,则需要根据企业的要求配置 TLS 策略,我们可以使用自定义 TLS 策略。使用自定义 TLS 策略,可以完全控制要支持的最低 TLS 协议版本,以及支持的密码套件及其优先级顺序。
禁用TLS V1
聊了这么多,接下来我们就一起来看下如何在Azure Application Gateway上禁用TLS V1。
首先需要登录到Azure门户,然后点击Application Gateway,找到需要禁用TLS V1的Gateway进行点击,然后点击“Listeners”:
在“Listeners”下,点击"Selected SSL Policy :Default"右侧的change:
在"Change SSL Policy"选项卡下,进行SSL配置即可:
配置完成后,通过测试站点可以看到,目前低版本的TLS已经被禁用: