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