如果有什么方法可以知道客户端是否希望服务器启用 SSL?
我正在构建一个小型 SMTP 服务器并在 465 上实现了 SSL,但一些客户端不期望 SSL,因此显然连接失败。
有没有可能以任何方式告诉这一点?
如果有什么方法可以知道客户端是否希望服务器启用 SSL?
我正在构建一个小型 SMTP 服务器并在 465 上实现了 SSL,但一些客户端不期望 SSL,因此显然连接失败。
有没有可能以任何方式告诉这一点?
服务器没有干净的方法来检测客户端是否希望在连接开始时使用 SSL/TLS。事实上,如果期望服务器首先发送数据(就像 SMTP 的情况:服务器在客户端发送任何数据之前发送横幅),那么根本没有办法做到这一点。
这就是 SSL/TLS 通常以以下两种方式之一使用的原因:
STARTTLS 的效率有点低,因为服务器和客户端之间的非 SSL/TLS 对话首先发生(使用多个网络往返)并且它不适用于所有协议(HTTP 不支持它),但是如果可用,它通常是首选,因为它可以更轻松地自动配置电子邮件设置(无需探测一堆可能的端口并选择最好的端口)。
端口 465 是第一个解决方案的示例:选择一个新端口并在其上运行 SSL/TLS。这意味着服务器和客户端都应该立即使用 SSL/TLS 在该端口上进行通信。
如果您看到客户端尝试在端口 465 上使用纯文本 SMTP,则这些客户端是 BROKEN。真的没有什么可以解决的。客户有严重的错误,应该修复......
此外,对于 SMTP,您确实需要使用 STARTTLS,而不是 SMTP over SSL/TLS on port 465。