什麼是 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 命令啟動服務器和客戶端之間的協商。 這是電子郵件客戶端和電子郵件服務器之間發生的通信的概要。
- 該過程從傳輸控制協議 (TCP) 握手開始,以幫助電子郵件客戶端和服務器相互識別。
- 服務器通過 220 就緒標識電子郵件客戶端可以繼續進行通信。
- 客戶端向服務器發送“EHLO”以通知服務器客戶端想要使用擴展 SMTP(更高級的 SMTP 版本,允許您包含圖像、附件等)。
- 客戶端向郵件服務器發送“250-STARTTLS”,詢問是否接受 StartTLS。
- 如果服務器發回“go head”,則可以創建 StartTLS 連接。
- 客戶端重新啟動連接,電子郵件已加密。
這是 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 電子郵件。