OpenSSL 错误消息:错误:0A000126:SSL 例程::读取时出现意外的 eof

问题描述 投票:0回答:5

Screenshot is here

我使用 YII2 框架用 PHP 构建了一个网站。当我使用 file_get_contents($requestUrl, false, stream_context_create($arrContextOptions)) 时,我收到错误消息 error:0A000126:SSLroutines::unexpected eof while Reading 我还尝试通过编辑 openssl.cnf 文件来启用旧提供程序,但没有成功。 参考:https://gist.github.com/rdh27785/97210d439a280063bd768006450c435d

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

服务器:Nginx (nginx/1.18.0) 操作系统:Ubuntu 22.04 LTS PHP:7.4.29 Openssl:1.1.1d

php ubuntu openssl php-openssl
5个回答
15
投票

此错误不仅出现在 PHP 中,而且出现在各种上下文中,因此我在这里写了一个通用答案。其他答案通过升级已经在上游实施该解决方案的软件来解决该问题。 这里解释了原因和背景。大多数链接 OpenSSL 的软件都有票证,它们引入了对新

openssl
行为的支持,例如123。目前,Ubuntu 22.04 LTS
curl
的版本为 7.81.0,如果 OpenSSL 3.0.x 出现意外 EOF,则会失败。最新的
curl
是7.88.1,显然解决了这个问题,尽管我找不到确切的提交或票证。 Ubuntu 22.04 和任何具有旧版curl 的系统中的解决方案是手动编译并安装最新版本,如here所示。

重要的是,该问题可以在客户端解决,您无需对服务器执行任何操作(尤其是在大多数情况下,它是第三方服务器并且可以正常工作)。

TLDR:

apt remove curl
apt purge curl
apt-get update
apt-get install -y libssl-dev autoconf libtool make
cd /usr/local/src
wget https://curl.haxx.se/download/curl-7.88.1.zip
unzip curl-7.88.1.zip
cd curl-7.88.1
./buildconf
./configure --with-ssl 
make
sudo make install
sudo cp /usr/local/bin/curl /usr/bin/curl
sudo ldconfig
curl -V

10
投票

我刚刚遇到了同样的问题,看起来是 Ubuntu 22.04 上 OpenSSL 的问题。

我刚刚更新了服务器上的所有软件包,现在功能可以按预期运行。

sudo apt update && sudo apt upgrade -y

5
投票

将 nginx 1.18.0 升级到主线版本,问题将得到解决。 这样做:

  1. 以 sudo 执行:
    curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor >/usr/share/keyrings/nginx-signing.gpg
  2. 在 /etc/apt/sources.list 中添加行:
deb [signed-by=/usr/share/keyrings/nginx-signing.gpg] https://nginx.org/packages/mainline/ubuntu/ jammy nginx
deb-src [signed-by=/usr/share/keyrings/nginx-signing.gpg] https://nginx.org/packages/mainline/ubuntu/ jammy nginx
  1. sudo apt update
  2. sudo apt install nginx

然后重启nginx服务器。


0
投票

您收到此错误的另一个可能原因是防火墙阻止了从计算机到互联网的流量。

就我而言,它是一台 Ubuntu 22.04 LTS 计算机,位于 Azure 防火墙后面。防火墙被配置为仅允许某些类别,而我试图与之交谈的站点不属于允许的类别。

在您的情况下,可能是另一种规则阻止了它。您可能希望查看防火墙的日志,以了解它是否阻止以及原因。


-1
投票

尝试将 Nginx 升级到 1.22 可能会有所帮助。

在 Cent OS 9 Stream 上,您可以使用以下命令安装它

dnf module list nginx
dnf module reset nginx
dnf module install nginx:1.22
© www.soinside.com 2019 - 2024. All rights reserved.