0

据我了解,两者都加密了连接。但是,SSL/TLS “强制”邮件客户端从一开始就加密通道。现在假设我telnet mail.server 25,在 ehlo 之后,我看到了 STARTTLS 作为服务器允许我(邮件客户端)使用的身份验证选项。如果我选择 STARTTLS 是否意味着我可以针对服务器(使用我的数字证书)验证我自己(邮件客户端)?为什么以及如何?

我正在执行以下操作,但我不明白客户端身份验证部分的来源:

telnet some.mail.server 25
ehlo some.mail.server
...
250-STARTTLS
...
STARTTLS
mail from: guy
rcpt to: otherGuy
data
someting
.
quit

我不应该将客户端证书发送到服务器吗?我尝试使用openssl s_client -starttls smtp它实际上提供了 -cert 和 -key 选项来指定证书和私钥。

所以,事实上,与 STARTTLS 相比,SSL/TLS 的唯一缺点是,由于连接会立即加密,因此客户端无法在同一端口上发送其证书。只有服务器可以发送其证书。正确的?我脑子里有很多困惑......请为我澄清这一点。

4

1 回答 1

1

直接 TLS 模式和使用 STARTTLS 的 TLS 升级都可以使用客户端证书。这些模式之间的唯一区别是,使用 STARTTLS,您从普通连接开始,如果服务器宣布支持 STARTTLS,则稍后升级。中间的人可以删除此公告(类似于sslstrip),从而阻止升级到 TLS。这实际上是在实践中使用的,请参见https://www.eff.org/deeplinks/2014/11/starttls-downgrade-attacks

不幸的是,用于通知哪些服务器负责邮件传输的 MX 记录只能通知主机而没有端口,在这种情况下,默认端口 25 将与普通 SMTP 协议一起使用。因此,您只能使用 STARTTLS 命令获取 TLS。

于 2014-11-13T21:52:14.477 回答