php SSL错误“unexpected eof while阅读”在与原始请求相同的服务器上

rkkpypqq  于 2023-03-21  发布在  PHP
关注(0)|答案(1)|浏览(476)

首先,我知道SSL Library Error: error:0A000126:SSL routines::unexpected eof while reading错误源于OpenSSL 3重新引入了一个防止截断攻击的功能。
我的问题是,为什么当我从报告错误的同一个服务器上通过PHP进行curl调用时,会看到这个错误?
我正在运行Rocky Linux 9.1,PHP 8.0.27,并且有OpenSSL 3.0.1(最新版本可用)。我还不能通过dnf模块升级到PHP8.1,因为缺少该版本不可用的库。
因为我是从服务器向自身发出curl调用,所以有人会认为,如果它足够及时地识别出错误,那么它应该正确地发出请求。“bug”报告表明,这通常是来自不兼容的服务器发出的请求,那么,我应该在系统中的哪个位置来纠正请求格式,以便使自己符合要求,并使我的curl请求重新工作?
以下是我在请求中使用的当前 curl 选项...

CURLOPT_HTTPGET => TRUE,
CURLOPT_HEADER => FALSE,
CURLOPT_FAILONERROR => FALSE,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 60,
CURLOPT_SSL_CIPHER_LIST => NULL,
CURLOPT_CAINFO => '/path/to/ca-certs.pem',
CURLOPT_SSL_VERIFYPEER => TRUE,
CURLOPT_SSL_VERIFYHOST => 2

以下是httpd.conf的SSL/TLS相关选项...

SSLProtocol -all +TLSv1.3 +TLSv1.2
SSLProxyProtocol -all +TLSv1.3 +TLSv1.2

SSLCipherSuite    TLSv1.3   TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
SSLCipherSuite    SSL       AES256+EECDH:AES256+EDH:!SHA1:!SHA256:!SHA384

SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off

SSLOpenSSLConfCmd Curves X25519:secp521r1:prime256v1

感谢您提供的任何帮助!
编辑:下面的解决方案,tldr;必须在客户端请求中指定TLS版本和密码。

a8jjtwal

a8jjtwal1#

一个有用的错误消息本来是有帮助的,但本质上这归结为curl没有协商有限的(但可用的)密码之一,因此在握手过程中失败。我不得不手动强制curl使用TLS1.2,以及服务器限制的特定密码。下面是我添加到curlopt列表的内容...

CURLOPT_SSLVERSION = CURL_SSLVERSION_TLSv1_2,
CURLOPT_SSL_CIPHER_LIST = 'AES256+EECDH:AES256+EDH'

没有更多的错误。希望这能帮助某人避免我在这上面浪费的2天。

相关问题