什么是 StartTLS?

已发表: 2020-03-21

有没有想过如何安全地将电子邮件从一台服务器发送到另一台服务器? 在使用简单邮件传输协议 (SMTP) 发送邮件时,我们依靠 StartTLS 和传输层安全性 (TLS) 或安全套接字层 (SSL) 的组合来加密我们的邮件并帮助它安全地进入收件箱。

但是什么是 StartTLS?

StartTLS 是一种协议命令,用于通知电子邮件服务器电子邮件客户端想要从不安全的连接升级到使用 TLS 或 SSL 的安全连接。 StartTLS 与 SMTP 和 IMAP 一起使用,而 POP3 使用稍有不同的加密命令 STLS。

我们将深入研究 TLS 和 SSL 之间的差异、StartTLS 过程以及如何为您的程序测试 StartTLS。

StartTLS 是如何工作的?

TLS 与 SSL

尽管名称中有“TLS”,但 StartTLS 可与加密协议 TLS 和 SSL 一起使用。

虽然 StartTLS 适用于这两种协议,但我们建议使用 TLS over SSL。 SSL 是一种较旧的协议,不如其继任者 TLS 安全。 SSLv2 和 SSLv3 都已被弃用。

作为参考,以下是从最旧到最新的 SSL 和 TLS 协议列表:

SSLv2、SSLv3、TLSv1.0、TLSv1.1、TLSv1.2、TLSv1.3

电子邮件客户端和电子邮件服务器都需要就使用的连接达成一致。 电子邮件客户端可能支持 TLSv1.3,但电子邮件服务器可能仅支持 TLSv1.2。 这意味着双方都需要使用 TLSv1.2 来进行加密。

有关 TLS 与 SSL 的更多信息,请查看我们的文档页面

StartTLS 进程

SMTP 始终未加密启动。 StartTLS 命令启动服务器和客户端之间的协商。 这是电子邮件客户端和电子邮件服务器之间发生的通信的概要。

  1. 该过程从传输控制协议 (TCP) 握手开始,以帮助电子邮件客户端和服务器相互识别。
  2. 服务器通过 220 就绪标识电子邮件客户端可以继续进行通信。
  3. 客户端向服务器发送“EHLO”以通知服务器客户端想要使用扩展 SMTP(更高级的 SMTP 版本,允许您包含图像、附件等)。
  4. 客户端向邮件服务器发送“250-STARTTLS”,询问是否接受 StartTLS。
  5. 如果服务器发回“go head”,则可以创建 StartTLS 连接。
  6. 客户端重新启动连接,电子邮件已加密。

这是 StartTLS 过程的可视化表示。

您应该使用哪个端口?

最常使用 StartTLS 的端口是 587 端口。它通常需要电子邮件客户端使用 StartTLS 来发送邮件。 用于发送加密邮件的其他端口是 25、465 和 2525。由于端口 25 是为邮件传输而非提交而设计的,因此您的 ISP 可能会阻止通过此端口发送的电子邮件。 端口 465 是 StartTLS 的第二常用端口。

机会主义与强制 TLS

使用 Opportunistic TLS 或 Enforced TLS 有几种不同的方法来设置您的电子邮件加密程序:

Opportunistic TLS (或显式 TLS)允许电子邮件客户端以收件人服务器接受的最高加密级别进行传送。 如果收件人服务器不接受 TLS,则电子邮件客户端将与服务器协商并同意降级到未加密的连接。 然后,该消息将以未加密的纯文本形式发送。 此方法很有用,因为您可以对加密邮件和纯文本邮件使用相同的端口。

强制 TLS (或隐式 TLS)要求邮件通过安全连接发送。 如果连接没有加密,邮件将被阻止发送。 这种方法比 Opportunistic TLS 安全得多,但确实会导致更多邮件被丢弃。

这两种方法都在电子邮件世界中广泛使用,因此请考虑对您的程序最有意义的方法。 如果您要发送包含敏感个人信息的电子邮件,最好使用强制 TLS。 另一方面,如果您要发送非敏感材料,例如营销或促销,您可能更倾向于使用 Opportunistic TLS。

其他 TLS 用例

TLS 经常用于加密电子邮件之外的各种通信方法。 由于 TLS 是一种相对简单的多步骤协议,因此可以很容易地针对各种通信类型进行调整。 这包括 Web 浏览器、SMS 和 IP 语音。 事实上,许多公司使用 TLS 来加密其 Web 服务器和浏览器之间的所有通信,即使大部分通信不是敏感材料。

有关 Twilio 如何使用 TLS 的更多信息,请查看Twilio 的安全页面

为什么 StartTLS 很重要?

默认情况下,SMTP 是不安全的,这意味着如果您在没有 StartTLS 的情况下通过 SMTP 发送电子邮件,则电子邮件可能会被拦截并轻松解释。 这在发送敏感的个人信息(如用户名、密码或银行信息)时尤其令人担忧。

如果没有 StartTLS,您的个人信息就有被盗的风险。

当电子邮件客户端使用 StartTLS 时,它会通知服务器内容必须加密。 这样一来,如果邮件被截获,内容就被打乱了,破译难度很大。 电子邮件服务器和电子邮件客户端是唯一拥有解密消息的密钥的。

缺点

使用 StartTLS 有一些缺点。 电子邮件客户端容易受到中间人攻击,因为在电子邮件客户端和服务器之间的初始连接中,IP 地址未加密。

使用 StartTLS 还会给 SMTP 连接增加一些延迟。 这不足以延迟发送未加密的电子邮件,但请记住这一点。

如何测试 StartTLS?

提前测试以确保服务器能够处理 StartTLS 非常重要。 如果它无法处理 StartTLS,您可能会意外发送大量未加密的电子邮件,因此容易受到攻击向量的影响。

下面是一个如何从 SendGrid 的 SMTP 服务器测试 StartTLS 的示例。

Twilio SendGrid 如何使用 StartTLS?

Twilio SendGrid 支持 TLS v1.1 及更高版本。 端口 25、587 和 2525 接受未加密和 TLS 连接。或者,您可以通过端口 465 上的 SSL 进行连接。

我们遵循Opportunistic TLS并以接收服务器接受的最高加密级别发送。 我们还提供强制 TLS 您可以选择是否需要通过加密连接发送电子邮件。 如果接收服务器不接受加密消息,则该消息被丢弃并且我们发送一个阻止事件。

在向 Twilio SendGrid 发起 SMTP 请求时,您将主要与 StartTLS 交互,要求发送邮件。 否则,Twilio SendGrid 将处理 TLS 证书的匹配、加密过程的其余部分以及沿途可能出现的任何问题。

有关 Twilio SendGrid 和 SMTP 的更多信息,请参阅我们的文档文章如何发送 SMTP 电子邮件