14

Screenshot is here

I have built a website in PHP using the YII2 framework. When I use file_get_contents($requestUrl, false, stream_context_create($arrContextOptions)) then i am getting error saying error:0A000126:SSL routines::unexpected eof while reading I have also tried to enable the legacy provider by editing the openssl.cnf file, but got no success. Reference: https://gist.github.com/rdh27785/97210d439a280063bd768006450c435d

Any help would be appriciated.

Server: Nginx (nginx/1.18.0) OS: Ubuntu 22.04 LTS PHP: 7.4.29 Openssl: 1.1.1d

Salik Mohammad
  • 141
  • 1
  • 1
  • 5

4 Answers4

11

This error manifests not only with PHP but in a broad variety of contexts, so I write a generic answer here. The other answers address the issue by upgrading software that have implemented the solution already upstream. The reasons and background is explained here. Most software linking OpenSSL have tickets where they introduce support for the new openssl behaviour, e.g. 1, 2, 3. Currently, in Ubuntu 22.04 LTS curl is version 7.81.0, and fails in case of unexpected EOF with OpenSSL 3.0.x. The latest curl is 7.88.1, and apparently resolved the issue, though I could not find the exact commit or ticket. The solution in Ubuntu 22.04 and any system with old curl is to manually compile and install the latest one, as shown for example here.

Importantly, the issue can be addressed on client side, you don't have to do anything with the server (especially that, in most cases, it's a third party server and works correctly).

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
deeenes
  • 4,148
  • 5
  • 43
  • 59
10

I just had the same issue, it looks like its an issue with OpenSSL on Ubuntu 22.04.

I just updated all my packages on the server and now functionality is working as expected.

sudo apt update && sudo apt upgrade -y
lky
  • 1,081
  • 3
  • 15
  • 31
  • 1
    Interesting, we've had some users complain about 502 errors ("Bad Gateway") etc on SlickStack recently. Despite upgrading to latest packages, the error still persisted in my case, even after changing to Lets Encrypt. Rebooting the server fixed it however, and the frontend of the site suddenly loaded fine after that... TLDR: update, upgrade, reboot. – Jesse Nickles Jul 12 '22 at 11:01
  • Reminds me of Windows. Reboot didn't fix it for me (as usual on Linux). – thomas Aug 25 '22 at 01:07
  • Was having this issue setting up etcd for a multimaster K8s cluster. This fixed it. The error was buried deep inside kubelet error logs too. – Slyke Sep 09 '22 at 09:17
  • 1
    I have the same issue on my Ubuntu 22.04. Update and upgrade don't resolve my issue unfortunately. – Anand Nov 26 '22 at 09:32
5

Upgrade your nginx 1.18.0 to the mainline version and the problem will be fixed. To do so:

  1. Execute as sudo: curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor >/usr/share/keyrings/nginx-signing.gpg.
  2. ADD THE LINES in /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

Then restart the nginx server.

Ankit Singh
  • 79
  • 3
  • 12
-1

Try to upgrade your Nginx to 1.22 may help.

On Cent OS 9 Stream, you can install it with the following commmands

dnf module list nginx
dnf module reset nginx
dnf module install nginx:1.22
Haozhe Xie
  • 3,438
  • 7
  • 27
  • 53