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

Sal*_*mad 22 php ubuntu openssl php-openssl

截图在这里

我使用 YII2 框架用 PHP 构建了一个网站。当我使用 file_get_contents($requestUrl, false, stream_context_create($arrContextOptions)) 时,我收到错误消息error:0A000126:SSLroutines::unexpected eof 在阅读时 我还尝试通过编辑 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

dee*_*nes 22

此错误不仅出现在 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 的系统中的解决方案是手动编译并安装最新版本,如下所示

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

总而言之:

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
Run Code Online (Sandbox Code Playgroud)


hea*_*y12 12

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

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

sudo apt update && sudo apt upgrade -y
Run Code Online (Sandbox Code Playgroud)

  • 我的 Ubuntu 22.04 上也有同样的问题。不幸的是,更新和升级并不能解决我的问题。 (3认同)

Ank*_*ngh 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
Run Code Online (Sandbox Code Playgroud)
  1. sudo apt update
  2. sudo apt install nginx

然后重启nginx服务器。