TLS VS STARTTLS

SSL和 TLS

关系SMTP协议的安全性,可以参考这里的文章,默认情况下SMTP协议并非那么安全。因此,黑客很容易窃取我们邮箱里的重要信息,所幸的时至今日的加密方式让他们窃取的工作变得不是那么容易了。

SSL(安全套接字层)和它的继任者(传输层安全协议)是邮件传输过程中的两种加密协议,它们都是通过使用私钥和公钥将信息加密成一串无用的字符,如果在传输过程中某一步被泄露了,他的信息对窃密者来说也毫无意义。

SSL协议是有网景公司与1995年开发,并很快流行于当时的邮件客户端。若干年以后,TLS问世,它相对于SSL来说更加安全和可靠。

SSL已经过时了,但是应用依旧广泛,实际上我们在使用过程中通常都能看到SSL和TLS是以”SSL/TLS”的形式出现。

STARTTLS

STARTSSL并非一个协议而是一个邮件协议的命令字,它用来告诉邮件服务器和客户端希望将不安全的连接升级到安全的SSL或TLS。

需要注意的是STARTTLS并非只能用于TLS,SSL同样可以使用。

STARTTLS不仅能用于SMTP而且可以使用IMAP协议,通常用来从邮件服务器中解析邮件。POP3和其他协议用来解析邮件有类似的命令,STLS。

TLS/SSL和STARTTLS是如何工作的?

就像人类社交一样,邮件客户端和服务器端的通讯也是需要经过”握手”一个礼仪。当邮件被发出时,客户端先验证服务端是否可用。他们交换SSL/TLS的版本是否兼容,服务器返回一个数字证书以确认自己的身份。验证通过后,双方生成一个唯一的校验码用来解密加密的信息。

握手阶段,双方先建立一个连接,但是SMTP默认是不安全的,因此有如下两种方式建立:

  • 可选的SSL/TLS: 客户端发送STARTTLS命令将连接升级为加密连接,如果服务器没有错误,连接则建立,如果发生错误,则回退到纯文本的模式。
  • 强制SSL/TLS:客户端不会询问服务端是否兼容而是直接试图建立安全连接,如果成功,则连接成功,否则等待至直至连接超时。

隐式和显式的SSL/TLS应该使用哪些端口

多年以来25端口作为邮件服务器间的通讯端口,发送和接收了大量的垃圾邮件。后来25端口被限制来只用作回复,而587端口被用来作为发送的主要端口。虽然587没有要求STARTTLS一定要使用,但是仍然要求用户名和密码,如果想要使用显式SSL/TLS应该使用587端口。

曾经有段时间465被建议作为邮件的发送端口,后来由于587端口的使用很快就被撤销了,但是已经有很多客户端和服务器使用了465,因此465被作为587的备用选项(那些希望隐式使用SSL/TLS的用户)。

时至今日,很多邮件客户端和服务端将隐式和显式SSL/TLS统一在了587端口。2018年IETF建议将465作为隐式TLS的端口,STARTTLS也许在不久的将来将退出舞台。

IMAP和POP3对于隐式和显式同样使用了不同的端口,IMAP显式使用143,隐式993,POP3显式使用110隐式使用995.

你的支持我的动力