为ALB添加TLS1.3支持

3月22日,AWS终于为ALB增加了TLS1.3的支持,详细见此News

https://aws.amazon.com/about-aws/whats-new/2023/03/application-load-balancer-tls-1-3/

理论性能上可能有微小的变化,但是这种客户端为主的Feature,我们更多的是为了一个潜在的安全性和可能性,姑笔者结合ChatGPT生成以下如何修改ALB的Cipher Suite,一方面检验GPT4的ChatGPT在解答此类问题上是否有问题,一方面也帮助大家完成TLS1.3的开启。

修改AWS ALB的Cipher Suite主要涉及以下几个步骤:

1. 登录AWS管理控制台并导航至EC2控制台。

2. 在左侧导航栏中,点击“Load Balancers”进入负载均衡器管理界面。

3. 选择要修改的ALB,然后点击“Listeners”选项卡。

4. 选择使用的监听器(如HTTPS),点击“Edit”。

5. 在“Edit listener”窗口中,找到“Security Policy”选项。

6. 点击“Security Policy”旁边的下拉框,选择一个预定义的安全策略或创建一个自定义策略。预定义的安全策略包含一组AWS推荐的Cipher Suites,而自定义策略允许您指定特定的Cipher Suites。

7. 若要创建自定义策略,请在AWS Certificate Manager(ACM)中操作。转到ACM控制台,选择“Custom TLS policies”选项卡,然后点击“Create custom policy”。在此页面上,您可以指定自定义策略的名称、TLS版本以及所需的Cipher Suites。完成后,点击“Create”。

8. 返回“Edit listener”窗口,选择您刚刚创建的自定义安全策略。

9. 最后,点击“Save changes”以保存对监听器的更改。您的应用负载均衡器现在将使用所选的Cipher Suite处理传入的SSL/TLS连接。

通过上述步骤,您已成功修改了AWS ALB的Cipher Suite。这有助于提高您应用的安全性和性能。为了确保您的ALB始终符合最佳安全实践和行业标准,请定期检查并更新您的Cipher Suite。AWS会定期发布新的预定义安全策略,以便适应不断变化的加密环境。保持与最新安全标准的一致性可帮助防止潜在的安全威胁,并确保您的应用在加密和数据保护方面始终处于领先地位。

大概的步骤是没有问题的,但是需要说明的是从第六步开始就放飞自我了,一个很重要的知识点是

ALB并不支持自定义安全策略(Security Policy),但是它的前身,CLB是支持的。

这就更不用说之后的789三个步骤就是纯纯的杜撰。

我们看一个实际的截图如下。

其中以TLS13为构成的Security Policy提供了TLS1.3,而各个Security Policy的详细构成,可以参考这个文档。

https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html#describe-ssl-policies

这里还有一个有趣的点,我们之前使用的Policy是

ELBSecurityPolicy-TLS-1-2-Ext-2018-06

它是一个TLS最低版本是1.2,但是提供更好兼容性的Policy,考虑继续保证兼容性,我们选择它对应的TLS1.3的Policy,然而TLS1.3却提供了两个Ext

ELBSecurityPolicy-TLS13-1-2-Ext1-2021-06

ELBSecurityPolicy-TLS13-1-2-Ext2-2021-06

通过对比,可以发现TLS1.2 Ext的TLS1.3版本实际上为TLS1.3 Ext2

最后补充一个知识,随着客户对安全传输的要求不断加强,以及各个安全指南认定TLS1.0/1.1为不安全,作为服务端,我们就需要分析Legacy站点的访问中有多少以TLS1.0/1.1发起的。这时对于ALB而言,我们便可以从访问日志中找到这个部分。以下是一个ALB访问日志的示例

h2 2018-07-02T22:23:00.186641Z app/my-loadbalancer/50dc6c495c0c9188
10.0.1.252:48160 10.0.0.66:9000 0.000 0.002 0.000 200 200 5 257
"GET https://10.0.2.105:773/ HTTP/2.0" "curl/7.46.0" ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2
arn:aws:elasticloadbalancing:us-east-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067
"Root=1-58337327-72bd00b0343d75b906739c42" "-" "-"
1 2018-07-02T22:22:48.364000Z "redirect" "https://example.com:80/" "-" "10.0.0.66:9000" "200" "-" "-"

可以看到这个HTTP/2请求,使用了TLS1.2。而最简单的方式便是使用Athena对于存储在S3中的ALB访问日志做聚合,这样方便我们对Migration的影响做出一个基本的估计。