我正在使用z-push-contrib从IMAP服务器获取电子邮件(也由我运行)。
如果我使用imap_open
选项/ssl
并连接到端口993,则正在使用TLS 1.2。
如果我使用/tls
并使用STARTTLS连接到端口143,则会使用TLS 1.0和其他密码。
SMTP的行为相同(STARTTLS仅使用TLS 1.0)
如果我从命令行使用openssl,则使用TLS 1.2:
如果我使用STARTTLS连接到端口993或143并不重要,我总是使用相同的强大的现代密码获得TLS 1.2连接。
这是PHP的Openssl实现中的错误吗?
答案 0 :(得分:3)
不,它是在PHP documentation:
中定义的差异非常微妙。基本上,StatTLS连接到未加密的端口/连接,然后请求加密,而TLS / SSL会话在传输任何文本之前都会被加密(请参阅STARTTLS)。它们通常使用不同的端口,但邮件服务器通常支持两个端口(因此它们支持更广泛的客户端)。
Cipher和TLS版本选择基于客户端 - 服务器协商,但STARTTLS可以理解为功能较少的客户端或服务器,然后决策参数不同。
AFAIK,通过STARTTLS连接时对TLS1.1和TLS1.2的使用没有限制,但它们的连接方式与TLS / SSL不同。
有疑问,请使用TLS / SSL,因为它更安全:)
<强>更新强>
PHP IMAP扩展使用c-Client library用于IMAP协议特定的功能。这个库有些过时(2007) - 并且可能与调用openssl的方式处理STARTTLS命令的方式不同 - 这就是加密/密码使用差异的原因。