突然的openssl错误消息:错误:14090086使用FILE_GET_CONTENTS

2022-08-25 00:00:00 openssl php file-get-contents

我已经搜索了有关此错误的问题,但我不知道我自己的一些服务器之间可能发生了什么,这些服务器已经开始显示此错误:

Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /var/www/html/file_get.php on line 7

第7行是FILE_GET_CONTENTS命令。

这些是我控制的(Debian)服务器,因此我知道(据我所知)没有发生/更改或更新/升级。

我知道我可以使用包含以下内容的解决方案,但我很想先了解发生了什么(加上我有很多文件需要更新)。我还真的需要了解哪台服务器存在潜在问题。

我有3台服务器,它们都通过FILE_GET_CONTENTS请求访问另一台服务器。2台服务器突然(几小时前的今天)出现上述错误而开始出现故障,第三台服务器似乎仍工作正常。

我怀疑问题出在显示问题的两台服务器上,而不是它们都试图访问的第4台服务器。

如果我实现此代码,它会起作用,但我宁愿找到根本原因:

$arrContextOptions=array(
    "ssl"=>array(
        "verify_peer"=>false,
        "verify_peer_name"=>false,
    ),
);  

并将FILE_GET_CONTENTS修改为:

file_get_contents($input, false, stream_context_create($arrContextOptions)));

但如前所述,我有数百个文件需要更改。

所有服务器都是Debian,并使用LET加密有效的证书9)。

我已尝试将以下内容添加到php.ini:

openssl.cafile=/etc/letsencrypt/live/myserver.com/cert.pem

但这没有起作用(仍然存在相同的错误)。

仍然可以工作的服务器的OpenSSL版本是OpenSSL 1.1.0f 2017年5月25日(库:OpenSSL 1.1.0l 10 Sep 2019),显示错误的两个是OpenSSL 1.1.0l 10 2019 9月10日,不确定这是否相关。

如有任何帮助,我们将不胜感激。

更新

到目前为止,我已经解决了这个问题。经过大量的测试和尝试,老实说,我不太确定是什么解决了这个问题,让它再次工作,但我完成了以下所有操作:

  • apt upgrade
  • apt update
  • 我删除了旧的certbot-auto
  • 已安装certbot(较新版本)
  • 已从/etc/ca-certificates.conf中删除mozilla/DST_Root_CA_X3.crt
  • 运行update-ca-certificates

同样,我不确定上述哪种方法(或上述方法的组合)解决了问题,但它现在对我有效。


解决方案

我在CentOS 7上也遇到过同样的问题。

我的解决方案是:

  1. sudo yum update ca-certificates
  2. grep DST_Root_CA_x3 /etc/ssl/certs/ca-bundle.crt
  3. 删除DST_Root_CA_x3证书(如果存在)
  4. 重新启动您的服务

相关文章