突然的openssl错误消息:错误:14090086使用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上也遇到过同样的问题。
我的解决方案是:
sudo yum update ca-certificates
grep DST_Root_CA_x3 /etc/ssl/certs/ca-bundle.crt
- 删除DST_Root_CA_x3证书(如果存在)
- 重新启动您的服务
相关文章