php - SSL 上的 fsockopen 在特定主机上不起作用

标签 php ssl fsockopen

在工作的生产服务器上,在某个时候(6 月 24 日 13:18),fsockopen 开始失败,原因不明。

$sock = fsockopen("ssl://mail.dupcheck.org",993, $errno, $errstr, 300);
  • 它返回:$sock = false, errno = 0, errstr = ""相当快。
  • 它打开其他服务器。

重要的是,

  • 它不能同时在 linux 网络服务器和 windows (WAMP) 开发服务器上运行
  • MS Outlook 和其他邮件客户端完美连接到此服务器并获取邮件。
  • 那天(6 月 24 日)我们的 GoDaddy SSL 证书出现了一些问题 - 它开始显示不正确的日期!我们随后调用 GoDaddy 的支持,他们说问题已解决。
  • 从那以后,将近一个月,有时 fsockopen 可以正常工作,我们收到电子邮件,但没有人注意,没有人检查特定的邮件发送日志……直到今天它达到了 300M!

====

PHP 7.3.3-1, ubuntu16.04.1


是的,我阅读了手册,在谷歌上搜索了几个小时,没有任何缓解。没有人知道那是什么,包括系统管理员。

最佳答案

来自评论:

... openssl s_client perfectly working ...

它的工作原理是连接并进行 TLS 握手。但它并不能完美地工作,因为它清楚地表明证书验证失败:

$ openssl s_client -connect mail.dupcheck.org:993
...
Certificate chain
 0 s:/OU=Domain Control Validated/CN=mail.dupcheck.org
   i:/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certs.godaddy.com/repository//CN=Go Daddy Secure Certificate Authority - G2
...
    Verify return code: 10 (certificate has expired)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

仔细查看证书:

    Serial Number:
        92:a0:2d:2a:2f:28:6a:d5
Signature Algorithm: sha256WithRSAEncryption
    Issuer: C=US, ST=Arizona, L=Scottsdale, O=GoDaddy.com, Inc., OU=http://certs.godaddy.com/repository/, CN=Go Daddy Secure Certificate Authority - G2
    Validity
        Not Before: Jun 24 10:16:38 2016 GMT
        Not After : Jun 24 10:16:38 2019 GMT

因此,这个证书几周前就过期了。这可能是连接失败的原因。

... tls.imirhil.fr/tls/mail.dupcheck.org:993 does not seem to show anything extraordinary.

看起来这个站点根本不检查证书的有效性。

关于php - SSL 上的 fsockopen 在特定主机上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57172728/

相关文章:

apache - 多个 SSL 证书包?

ssl - Websphere 在哪里寻找 SSL 证书

php - 实时音频流套接字卡在浏览器中

java - JSP 中的 fsockopen 等价物

node.js - nodejs tls session ID

php - 使用带有 fsockopen 的 PHP 模拟 PayPal _xclick

php - php邮件功能中邮件发送失败

PHP检查用户是否在文本输入中输入了一些东西

php - 使用 ActiveRecord 的 Yii2 查询生成器

php - jquery 类型错误 : Response is null