通过PHP的IMAP:/ssl和/tls选择不同的tls版本
我经常从IMAP服务器(也由我运行)获取电子邮件 如果使用通过PHP的IMAP:/ssl和/tls选择不同的tls版本,php,ssl,starttls,Php,Ssl,Starttls,我经常从IMAP服务器(也由我运行)获取电子邮件 如果使用imap\u open选项/ssl并连接到端口993,则使用TLS 1.2 如果我使用/tls并使用STARTTLS连接到端口143,则使用tls 1.0和不同的密码 SMTP的行为相同(STARTTLS仅使用TLS 1.0) 如果从命令行使用openssl,则使用TLS 1.2: 不管我是用STARTTLS连接到端口993还是143,我总是使用同样强大的现代密码获得TLS1.2连接 这是PHP的Openssl实现中的一个错误吗?不是,它
imap\u open
选项/ssl
并连接到端口993,则使用TLS 1.2
如果我使用/tls
并使用STARTTLS连接到端口143,则使用tls 1.0和不同的密码
SMTP的行为相同(STARTTLS仅使用TLS 1.0)
如果从命令行使用openssl,则使用TLS 1.2:
不管我是用STARTTLS连接到端口993还是143,我总是使用同样强大的现代密码获得TLS1.2连接
这是PHP的Openssl实现中的一个错误吗?不是,它是在以下位置定义的:
- /tls:强制使用start tls加密会话,并拒绝与不支持该会话的服务器的连接
- /ssl:使用安全套接字层加密会话
更新 PHP IMAP扩展利用了用于IMAP协议特定函数的。此库有些过时(2007年)-可能处理STARTTLS命令的方式与调用openssl不同-这就是为什么使用的加密/密码不同。不,它的定义如下:
- /tls:强制使用start tls加密会话,并拒绝与不支持该会话的服务器的连接
- /ssl:使用安全套接字层加密会话
更新
PHP IMAP扩展利用了用于IMAP协议特定函数的。这个库有些过时(2007年),可能处理STARTTLS命令的方式与调用openssl不同,这就是为什么使用的加密/密码不同。您如何知道使用的是哪个版本?您是否进行了数据包捕获以查看ClientHello,还是在握手后检查了生成的协议?在最后一种情况下,可能只是为TLS1.0配置的服务器。我检查了服务器的日志和电子邮件头。正如我所写的,如果我通过Openssl直接连接,TLV1.2将按预期使用。服务器配置为使用TLS1、TLS1.1和TLS1.2,因为这是客户端上用于所有测试的同一OpenSSL,所以必须是使用它的应用程序(限制协议版本)或服务器。这不是OpenSSL本身的错误。这个服务器是公共的,这样人们就可以运行一些测试了吗?是的。我只是觉得奇怪的是,端口993使用TLS1.2,端口143只使用TLS1.0。您可以检查
openssl s_client
与openssl-starts smtp
或openssl-starts imap
来确定这是服务器端问题还是客户端问题。如果这是服务器端,您将看到不带-starttls的TLS1.2和带-starttls的TLS1.0。您如何知道使用的是哪个版本?您是否进行了数据包捕获以查看ClientHello,还是在握手后检查了生成的协议?在最后一种情况下,可能只是为TLS1.0配置的服务器。我检查了服务器的日志和电子邮件头。正如我所写的,如果我通过Openssl直接连接,TLV1.2将按预期使用。服务器配置为使用TLS1、TLS1.1和TLS1.2,因为这是客户端上用于所有测试的同一OpenSSL,所以必须是使用它的应用程序(限制协议版本)或服务器。这不是OpenSSL本身的错误。这个服务器是公共的,这样人们就可以运行一些测试了吗?是的。我只是觉得奇怪的是,端口993使用TLS1.2,端口143只使用TLS1.0。您可以检查openssl s_client
与openssl-starts smtp
或openssl-starts imap
来确定这是服务器端问题还是客户端问题。如果这是服务器端,您将看到没有-starttls的TLS 1.2和有-starttls的TLS 1.0。我可能没有明确说明这一点,但使用openssl,如果我使用SSL端口(如993)或使用端口143并使用starttls,则没有什么区别。这两次都使用相同的TLS版本和相同的密码。这就是它的工作原理,在使用STARTTLS时,没有理由使用较弱的密码或TLS版本。STARTTLS也不适用于“能力较差的客户端”,但被认为不需要特定的SSL端口,因此是一种改进。这(我假设)是PHP的openssl或IMAP实现中的一种不良行为,或者是在Z-PUSH中的一种不良行为。我无法确定哪一种先出现,STARTTLS(1999,请参阅)或通过SSL为IMAP保留端口993。我真的不认为STARTTLS是