我正在使用z-push-contrib从 IMAP 服务器(也由我运行)获取电子邮件。
如果我使用该imap_open选项/ssl并连接到端口 993,则正在使用 TLS 1.2。
如果我使用/tlsSTARTTLS使用并连接到端口 143,则将使用 TLS 1.0 和不同的密码。
SMTP 行为相同(STARTTLS 仅使用 TLS 1.0)
如果我从命令行使用 openssl,则正在使用 TLS 1.2:
无论我使用 STARTTLS 连接到端口 993 还是 143,我总是使用相同的强大的现代密码获得 TLS 1.2 连接。
这是 PHP 的 Openssl 实现中的错误吗?
不,它是在PHP 文档中定义的:
区别非常微妙。基本上 StatTLS 连接到未加密的端口/连接,然后要求加密,而 TLS/SSL 会话在传输任何文本之前加密(请参阅STARTTLS)。它们通常使用不同的端口,但邮件服务器通常在两个端口上都支持这两种端口(因此它们支持更广泛的客户端)。
密码和 TLS 版本选择基于客户端-服务器协商,但 STARTTLS 可以理解为功能较弱的客户端或服务器,则决策参数不同。
AFAIK,通过 STARTTLS 连接时对 TLS1.1 和 TLS1.2 的使用没有限制,但它们的连接方式与 TLS/SSL 不同。
有疑问,请使用 TLS/SSL,因为它更安全 :)
更新
PHP IMAP 扩展使用c-Client 库来实现 IMAP 协议特定的功能。这个库有点过时(2007 年)——并且处理 STARTTLS 命令的方式可能与调用 openssl 不同——这就是使用的加密/密码不同的原因。
| 归档时间: |
|
| 查看次数: |
4894 次 |
| 最近记录: |