您是否使用低于 1.2 的 TLS? 没关系,维护更新延迟是每个人都会遇到的事情。 我们理解。 然而,是时候向前迈进了。
记得在 2018 年 6 月时我们不再推荐使用 TLS 1.0 吗?如果您不记得,没关系,您可以在这篇文章中阅读更多信息。 好吧,现在我们已经过了 2 年,下一版本即将被边缘化,因此我们希望您做好准备,以避免服务中断。 本文旨在帮助您准备在不使用 TLS 1.1 的情况下运行,以便我们可以将访问限制为仅支持 TLS 1.2。 我们将指导您如何检查当前版本以及如何升级到最新版本。 只是为了好玩,我们真的很想听听您的反馈,并将您加入“优秀企业墙”,展示所有提前进行变更的关注安全的公司。
这对我有影响吗?
早在 2018 年,我们曾要求客户升级,TLS 1.2 一直是推荐的标准,您很可能是不受影响的。 然而,如果您使用任何注入消息的方法(SMTP 或 REST API)或收集数据(指标或 Webhook 等),那么您真的应该立即检查,确保您的系统支持 TLS 1.2。 请确保您对实际连接到 SparkPost 的服务器运行以下测试。
为什么这很重要
SparkPost 将不会在 2020 年 9 月之后接受 TLS 1.1 的连接
旧版本不安全
TLS 1.2 已经被推荐作为协议超过十年
所有炫酷的孩子都在这么做
为什么是现在?
实际上,问题应该是“你为什么还在支持它?” TLS 1.2 已经被推荐作为安全标准超过十年,而我们正面临着几乎没有人提供任何支持的情况,以低于 TLS 1.2 的任何东西。现在是时候让弱 HTTPS 支持死去,一了百了。 如果您在 2020 年 3 月之后仍在使用 TLS 1.1,您将很难连接到大多数服务。 SparkPost 已经给出了充足的宽限期来进行更新,而现在我们正在发送最后通知,让您在九月之前更新,因为那时我们将永久淘汰它。
但是,您究竟该如何修复它?
您的 IT 系统管理员或网络管理员很可能已经为您完成了这些工作,作为他们正常维护的一部分。 如果是这样,您应该请他们喝一杯啤酒并表示感谢。 如果没有,您可以按照以下步骤在 Linux、Windows 和 Mac 中完成这项工作。
请注意,在整个文档中,我们将使用美国 SparkPost 端点进行测试
如果您通常使用欧洲部署,您应该改用 EU 端点。
如何检查?(Linux 版本)
首先,让我们检查一下您友好的邻里系统管理员是否已经为您处理了这个问题。这实际上是 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 ALB,因此 SparkPost 连接,尚未支持 TLS 1.3,但它在 AWS 路线图上。
启动 Nmap 6.40 ( http://nmap.org ) 在 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 - 强 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - 强 | TLS_RSA_WITH_AES_128_CBC_SHA - 强 | TLS_RSA_WITH_AES_256_CBC_SHA - 强 | compressors: | NULL | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - 强 | TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - 强 | TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - 强 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - 强 | TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - 强 | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - 强 | TLS_RSA_WITH_AES_128_CBC_SHA - 强 | TLS_RSA_WITH_AES_128_CBC_SHA256 - 强 | TLS_RSA_WITH_AES_128_GCM_SHA256 - 强 | TLS_RSA_WITH_AES_256_CBC_SHA - 强 | TLS_RSA_WITH_AES_256_CBC_SHA256 - 强 | TLS_RSA_WITH_AES_256_GCM_SHA384 - 强 | compressors: | NULL |_ 最后强度: 强 Nmap 完成: 1 个 IP 地址(1 个主机在线)在 0.11 秒内扫描
此时,如果您希望,可以停止,因为重点是确保您能够使用 TLS 1.2 连接到 SparkPost。 如果您的连接支持 TLS 1.2,那就是我们目前需要的,所以这里一切都很好。 去请那个系统管理员喝一杯啤酒并感谢他们。
发送给我们一封电子邮件并告诉我们您成功了。
在您的 Mac 上检查支持
您可能需要检查 Mac 支持的最常见原因是您将其用于本地开发,因此让我们假设您要检查一下支持。
最少侵入的方法是使用 curl,它应该内置于每台 Mac 中。启动终端应用程序并使用协议标志专门测试 TLS 1.2。
curl https://api.sparkpost.com/ --tlsv1.2 --verbose * 尝试 54.213.185.174... * TCP_NODELAY 设置 * 已连接到 api.sparkpost.com(54.213.185.174)端口 443 (#0) * ALPN,提供 h2 * ALPN,提供 http/1.1 * 加密套件选择:ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH * 成功设置证书验证位置: * CAfile: /etc/ssl/cert.pem CApath: none * TLSv1.2 (OUT),TLS 握手,客户端问候 (1): * TLSv1.2 (IN),TLS 握手,服务器问候 (2): * TLSv1.2 (IN),TLS 握手,证书 (11): * TLSv1.2 (IN),TLS 握手,服务器密钥交换 (12): * TLSv1.2 (IN),TLS 握手,服务器结束(14): * TLSv1.2(OUT),TLS 握手,客户端密钥交换(16): * TLSv1.2(OUT),TLS 更改密码,客户端问候(1): * TLSv1.2(OUT),TLS 握手,完成(20): * TLSv1.2(IN),TLS 更改密码,客户端问候(1): * TLSv1.2(IN),TLS 握手,完成(20): * SSL 连接使用 TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 * ALPN,服务器接受使用 h2 * 服务器证书: * 主题:CN=*.sparkpost.com * 开始日期:2020 年 1 月 30 日 00:00:00 GMT * 过期日期:2021 年 2 月 28 日 12:00:00 GMT * subjectAltName:主机 "api.sparkpost.com" 匹配证书的 "*.sparkpost.com" * 颁发者:C=US; O=Amazon; OU=服务器 CA 1B; CN=Amazon * SSL 证书验证成功。 * 使用 HTTP2,服务器支持多重使用 * 连接状态已更改(HTTP/2 确认) * 将 HTTP/2 数据复制到连接缓冲区复制缓冲区以连接缓冲区升级:len=0 * 使用流 ID:1(简单处理 0x7fbd69805200) > GET / HTTP/2 > 主机:api.sparkpost.com > 用户代理:curl/7.54.0 > 接受:*/* > * 连接状态已更改(MAX_CONCURRENT_STREAMS 更新)! < HTTP/2 200 < 日期:2020 年 5 月 7 日星期四 15:14:30 GMT < 内容类型:文本/纯文本 < 内容长度:95 < 服务器:msys-http < * 连接 #0 到主机 api.sparkpost.com 保持不变 哦,嘿!您应该来和我们一起工作,构建很棒的东西!
如果您想使用 SMTP 连接进行测试,也可以使用以下命令:
openssl s_client -crlf -starttls smtp -tls1_2 -connect smtp.sparkpostmail.com:587
返回大量数据,包括:
SSL-会话:协议:TLSv1.2 加密套件:ECDHE-RSA-AES256-GCM-SHA384
在 Windows 中检查支持
类似于 Mac 使用案例,您可能需要在 Windows 中检查支持的最常见原因是您将其用于本地开发,因此让我们假设您要检查一下支持。
Windows 7 和 Windows 10 基本上使用相同的过程。 如果您使用的是更早版本,请升级,因为以前的版本不支持 TLS 1.2。
首先,单击左下角的“开始”(通常)。
输入“Internet 选项”,并从结果列表中选择匹配项。
单击“高级”选项卡,然后向下滚动到最底部。如果选中 TLS 1.2,您就已经做好准备。如果未选中,请勾选“使用 TLS 1.2”旁边的框,然后单击“应用”。
等等,什么?没有 1.2?
太糟糕了,朋友。 您的工作还没有完成。
如果您只有 TLS 1.1,那么您应该更新您的加密套件设置。
假设您使用 Linux 和 Apache 进行 TLS 连接管理,您可以通过修改这一行来添加“+TLSv1.2 ”来更新 SSL 配置:
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,TLS 1.2 的设置说明见上面的“检查 Windows 支持”部分。
现在完成了吗?给我们发一封电子邮件并告诉我们您成功了。
更进一步
为什么停留在 TLS 1.2,当您知道 – 您知道 – 我们在下一年左右都必须升级到 TLS 1.3。 为什么不在此过程中直接升级到 TLSv1.3?
不幸的是,AWS ALBs 尚不支持 TLS 1.3,因此,如果您确实升级了配置,您与 SparkPost 以及使用 ALB 层的任何其他 AWS 服务的连接将仍然限于 TLS 1.2。就我个人而言,尽管如此,我仍然认为趁您正在进行更改时,提前升级到 1.3 是一个好主意。
如果您想添加 TLS 1.3 支持,您可能需要首先将 OpenSSL 库更新到 V1.1.1 或更高版本,然后在上面提到的协议行中添加 +TLSv1.3 。类似的说明可以在此找到,适用于 Nginx 和 Cloudflare。
注意安全
最后,如果您能给我们发封简短的电子邮件,告诉我们您已经验证自己支持 TLS 1.2,那将是非常好的。 我们真的不想断开任何人,截止日期是2020年9月。 如果我们知道您都在安全区,我们将更安心地关闭旧支持。