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

2024-03-19

截图在这里 https://i.stack.imgur.com/45QV6.png

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

任何帮助,将不胜感激。

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


此错误不仅出现在 PHP 中,而且出现在各种上下文中,因此我在这里写了一个通用答案。其他答案通过升级已经在上游实施该解决方案的软件来解决该问题。解释原因和背景here https://github.com/openssl/openssl/issues/18866#issuecomment-1194219601。大多数链接 OpenSSL 的软件都有门票,其中介绍了对新版本的支持openssl行为,例如1 https://github.com/curl/curl/issues/9024, 2 https://github.com/php/php-src/issues/10215, 3 https://www.postfix.org/announcements/postfix-3.7.4.html。目前,在 Ubuntu 22.04 LTS 中curl是版本 7.81.0,如果 OpenSSL 3.0.x 出现意外 EOF,则会失败。最新的curl是 7.88.1,显然解决了这个问题,尽管我找不到确切的提交或票证。 Ubuntu 22.04 和任何具有旧版curl 的系统中的解决方案是手动编译并安装最新版本,如下所示here https://yannmjl.medium.com/how-to-manually-update-curl-on-ubuntu-server-899476062ad6.

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

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐