Reach

Grow

Manage

Automate

Reach

Grow

Manage

Automate

升级到 TLS 1.2

工程

1 min read

升级到 TLS 1.2

工程

1 min read

CUSTOMIZE 您是否在使用早于 1.2 的 TLS?没关系,维护更新延迟是每个人都会遇到的。我们理解。但现在是时候向前迈进了。

您是否在使用低于 1.2 的 TLS?没关系,维护更新的延迟每个人都会遇到。我们明白。不过,是时候向前迈进了。

还记得 2018 年 6 月我们弃用 TLS 1.0 的时候吗?如果不记得也没关系,您可以在这篇文章中阅读相关信息。现在,两年过去了,下一个版本即将被淘汰,所以我们希望您做好准备,避免服务中断。本文旨在帮助您做好准备,以便在不使用 TLS1.1 的情况下运行,从而将访问限制为仅使用 TLS1.2。我们将指导您检查当前版本并如何升级到最新版本。开个玩笑,我们非常想听听您的反馈,并将您添加到“卓越之墙”,展示所有那些早早做出改变的安全意识公司。

这会影响我吗?

早在2018年,我们就要求客户进行升级,并且TLS 1.2已经被推荐了相当长的一段时间,所以您很可能不会受到影响。 然而,如果您使用任何方法注入消息(SMTP或REST API)或收集数据(例如指标或webhooks等),那么您确实应该现在检查一下,以确保您的系统能够支持TLS 1.2。 请确保您在实际连接到SparkPost的服务器上运行以下测试。  

为什么它很重要

SparkPost 将不再接受 TLS 1.1 的连接,自 2020 年 9 月起生效

  1. 旧版本不安全

  2. TLS 1.2 已经成为推荐的协议已有十多年

  3. 所有酷小孩都在这么做

  4. IETF 表示它已经被正式弃用

Why now?

实际上,问题应该是“为什么你还在支持它?” TLS 1.2 在过去十多年一直是推荐的安全标准,我们实际上已经到了不再支持 任何低于 TLS1.2 的版本的关键时刻。是时候让弱 HTTPS 支持彻底消亡了。如果您在2020年3月之后仍在使用 TLS 1.1,您将很难连接到大多数服务。SparkPost 已经提供了充分的宽限期来进行此更新,现在我们正在发送最终通知,以便在9月之前完成升级,因为届时我们将永久停止支持它。

但请问,你怎么能修好它呢?

您的IT系统管理员或网站管理员可能已经为您完成了此操作,作为他们日常维护的一部分。如果是这样,您应该请他们喝一杯啤酒,并说声谢谢。如果还没有,您可以按照下面的一些步骤在Linux、Windows和Mac上完成。

请注意,在本文档中,我们将使用美国的SparkPost端点进行测试。

如果您通常使用欧洲部署,则应该使用欧盟端点。

你如何检查? (Linux version)

首先,让我们检查一下您的友好邻居系统管理员是否已经为您解决了这个问题。这实际上是SSL配置的一部分,因此可以在您的系统配置中进行管理。假设您在使用Linux,最具描述性的方法是使用nmap,但您也可以使用openssl。您可以在Linux、Windows和Mac上使用nmap,但如果您不想安装新软件,我们还会探讨其他Windows和Mac的方法。

要用nmap执行此操作,针对已知的HTTPS主机测试加密。因为目的是确保我们与SparkPost的连接是安全的,所以我们测试那个端点。确保您在实际连接到SparkPost的服务器上运行以下测试。

nmap --script ssl-enum-ciphers -p 443 api.sparkpost.com

这是在我自己的开发服务器上完成的,您可以很容易地看到我的配置支持TLS 1.1 和 1.2,但不支持1.3。需要注意的是,目前AWS ALBs(因此SparkPost连接)尚未支持TLS1.3,但已在AWS的计划中。

Starting Nmap 6.40 ( http://nmap.org ) at 2020-05-06 22:41 UTC Nmap扫描报告对于api.sparkpost.com(52.13.246.255)主机在线(0.00059s延迟)。其他api.sparkpost.com地址(未扫描):34.211.102.211 52.43.22.201 54.213.185.174 100.20.154.199 52.43.110.79 52.40.215.39 52.40.175.169 52.13.246.255的rDNS记录:ec2-52-13-246-255.us-west-2.compute.amazonaws.com 端口状态服务 443/tcp 开放 https | ssl-enum-ciphers: | TLSv1.1: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong | TLS_RSA_WITH_AES_128_CBC_SHA - strong | TLS_RSA_WITH_AES_256_CBC_SHA - strong | compressors: | NULL | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - strong | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - strong | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - strong | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - strong | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - strong | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - strong | TLS_RSA_WITH_AES_128_CBC_SHA - strong | TLS_RSA_WITH_AES_128_CBC_SHA256 - strong | TLS_RSA_WITH_AES_128_GCM_SHA256 - strong | TLS_RSA_WITH_AES_256_CBC_SHA - strong | TLS_RSA_WITH_AES_256_CBC_SHA256 - strong | TLS_RSA_WITH_AES_256_GCM_SHA384 - strong | compressors: | NULL |_ 最弱强度: strong Nmap done: 1 IP地址(1主机在线)扫描用时0.11秒

在这一点上,您实际上可以停止了,因为目的是确保您能够使用TLS 1.2连接到SparkPost。如果您的连接支持TLS 1.2,这正是我们目前所需的,因此我们这边就没问题了。去给那个系统管理员买杯啤酒,并说声谢谢。

发送我们电子邮件并让我们知道您成功了。

在您的 Mac 上检查支持

您可能需要在 Mac 上检查支持的最常见原因是因为您将其用于本地开发,那么我们假设这一点并检查您的支持情况。 

最不具侵入性的方法是使用 curl,它应该内置在每台 Mac 中。启动 Terminal 应用程序,并使用协议标志专门测试 TLS1.2。

curl https://api.sparkpost.com/ --tlsv1.2 --verbose * Trying 54.213.185.174... * TCP_NODELAY set * Connected to api.sparkpost.com (54.213.185.174) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * successfully set certificate verify locations: * CAfile: /etc/ssl/cert.pem CApath: none * TLSv1.2 (OUT), TLS handshake, Client hello (1): * TLSv1.2 (IN), TLS handshake, Server hello (2): * TLSv1.2 (IN), TLS handshake, Certificate (11): * TLSv1.2 (IN), TLS handshake, Server key exchange (12): * TLSv1.2 (IN), TLS handshake, Server finished (14): * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): * TLSv1.2 (OUT), TLS change cipher, Client hello (1): * TLSv1.2 (OUT), TLS handshake, Finished (20): * TLSv1.2 (IN), TLS change cipher, Client hello (1): * TLSv1.2 (IN), TLS handshake, Finished (20): * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=*.sparkpost.com * start date: Jan 30 00:00:00 2020 GMT * expire date: Feb 28 12:00:00 2021 GMT * subjectAltName: host "api.sparkpost.com" matched cert's "*.sparkpost.com" * issuer: C=US; O=Amazon; OU=Server CA 1B; CN=Amazon * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 * Using Stream ID: 1 (easy handle 0x7fbd69805200) > GET / HTTP/2 > Host: api.sparkpost.com > User-Agent: curl/7.54.0 > Accept: */* > * Connection state changed (MAX_CONCURRENT_STREAMS updated)! < HTTP/2 200 < date: Thu, 07 May 2020 15:14:30 GMT < content-type: text/plain < content-length: 95 < server: msys-http < * Connection #0 to host api.sparkpost.com left intact 哦嘿!你应该来和我们一起工作,做一些很棒的事情!

如果您想通过 SMTP 连接进行测试,您也可以使用以下命令:

openssl s_client -crlf -starttls smtp -tls1_2 -connect smtp.sparkpostmail.com:587

返回包括以下在内的大量数据:

SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES256-GCM-SHA384

检查 Windows 中的支持

类似于Mac的用例,您可能需要在Windows中检查支持的最常见原因是用于本地开发,所以让我们假设这一点并检查您的支持。 

Windows 7和Windows 10基本使用相同的过程。 如果您使用更早的版本,请升级,因为先前的版本不支持TLS 1.2。

首先,点击左下角的开始按钮(通常)。


输入“Internet Options”并从结果列表中选择匹配项。


点击高级选项卡,然后向下滚动到最底部。如果TLS 1.2已被选中,您就已经准备好了。如果没有,请勾选使用TLS 1.2旁边的复选框,然后应用。

等等,什么?没有 1.2?

糟糕,伙计。你的工作还没有完成。

如果你只有TLS1.1,那么你应该更新你的加密套件设置。

假设你使用Linux和Apache进行TLS连接管理,可以通过修改这一行来更新SSL配置以添加“+TLSv1.2”:

SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2

(旁注:由于它们现在几乎不再被支持,因此在这里的时候移除1.0和1.1设置也很有意义。)

该配置通常位于/etc/httpd/conf.d/ssl.conf

重启Apache,你就可以开始了。

service httpd restart

如果你使用Nginx,你需要以类似的方式修改这一行:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

该配置通常位于/etc/nginx/conf.d/

重启Nginx,你就可以开始了。

service nginx restart

如果你在重启时遇到任何错误信息,可能是你的SSL库已过时。确保至少使用openssl v1.0.1g。

如果你使用Windows,设置TLS1.2的说明在上面的“Checking for support in Windows”部分。

现在全部完成了吗?给我们发送电子邮件让我们知道你成功了。

更进一步

为什么在知道我们都将不得不在明年或更晚的时间升级到TLS 1.3时,仍停留在TLS 1.2?你就是知道。为什么不趁机直接升级到TLSv1.3?

不幸的是,AWS ALB目前不支持TLS1.3,所以如果你升级了配置,与SparkPost及任何其他使用ALB层的AWS服务的连接仍将局限于TLS1.2。就我个人而言,我仍然认为,在进行更改的过程中,领先一步升级到1.3是个好主意。

如果想要增加TLS 1.3支持,你可能需要先将OpenSSL库更新到V1.1.1或更高版本,然后在上面提到的协议行中添加+TLSv1.3。类似的说明可以在这里找到,适用于Nginx和Cloudflare。

在外面注意安全

最后,如果您可以快速给我们发封邮件告知您已验证具备 TLS 1.2 的能力,那就太好了。  我们真的不想切断任何人,截止日期是 2020 年 9 月。  如果我们知道您都在安全区域,我们将对关闭旧支持感到更安心。

加入我们的Newsletter。

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

See Bird's Privacy Statement for details on data processing.

加入我们的Newsletter。

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

See Bird's Privacy Statement for details on data processing.

加入我们的Newsletter。

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

See Bird's Privacy Statement for details on data processing.

Reach

Grow

Manage

Automate

资源

公司

Newsletter

通过每周更新到您的收件箱,随时了解 Bird 的最新动态。

See Bird's Privacy Statement for details on data processing.