我已将 PHP 脚本移至另一台服务器,但现在无法登录 IMAP (TLS) 邮箱:
TLS/SSL failure for mail.servername.de: SSL negotiation failed
似乎问题是由 OpenSSL 引起的,因为当我尝试从两台服务器连接到邮件服务器时,在一种情况下我得到了一个连接(邮件服务器要求输入),但在另一种情况下没有(连接已关闭,我我回到
bash
): openssl s_client -crlf -connect mail.servername.de:993
最明显的区别在这里:
verify return:1
---
<snip>
-----END CERTIFICATE-----
subject=/CN=mail.servername.de
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: DH, 1024 bits
---
SSL handshake has read 3398 bytes and written 483 bytes
Verification: OK
---
New, TLSv1.2, Cipher is DHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
在其他服务器上(没有建立连接)
verify return:1
depth=0 CN = mail.servername.de
verify return:1
140410888582464:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:../ssl/statem/statem_clnt.c:2149:
---
<snip>
-----END CERTIFICATE-----
subject=CN = mail.servername.de
issuer=C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
---
No client certificate CA names sent
---
SSL handshake has read 3167 bytes and written 318 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Server public key is 2048 bit
在邮件服务器上
dovecot
配置为不接受非加密连接。但是,我认为它已经因为 dh key too small
而失败了。 ,这似乎与密码协商有关。现在我根本无法将这些东西放在一起......为什么 SSL 连接可以从一台服务器工作,而不能从另一台服务器工作?
最佳答案
由于我自己拥有“远程终端”,因此我能够提高安全性。解决方案很简单,也可能与其他人相关......dovecot
版本是 2.2.x,这与 DH 参数有一定的相关性(参见 Dovecot SSL configuration)。在配置文件/etc/dovecot/conf.d/10-ssl.conf
你可以简单地添加这一行:
ssl_dh_parameters_length = 2048
最后,可能需要在此处将其添加到主配置文件
/etc/dovecot/dovecot.conf
在最后:!include conf.d/*.conf
最后,重要的是不要重新加载,而是重新启动 dovecot。
systemctl restart dovecot
突然之间,几个小时的沉重、烦恼和挫败感都消失了。伟大的...
关于email - PHP imap_open()、OpenSSL 和无密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62109534/