gpt4 book ai didi

php - curl 错误 35 : gnutls_handshake() failed

转载 作者:行者123 更新时间:2023-12-03 00:09:47 26 4
gpt4 key购买 nike

我在使用 CURL 通过 SSL 请求 URI 的 PHP 组件中遇到以下错误:

cURL error 35: gnutls_handshake() failed: A TLS packet with unexpected length was received.

此错误发生在 travis-ci.org 环境中,但不会发生在我们的任何测试环境中。请参阅 travis-ci 构建 144663700 .

我发现 Travis Worker 中运行的 PHP 版本在“Ubuntu 12.04.5 LTS”上再次编译为“GnuTLS/2.12.14”,或者在“Ubuntu 14.04.3 LTS”上再次编译为“GnuTLS/2.12.23” ”。

在我们的开发环境中,我们使用针对 Debian(各个版本)上的“OpenSSL/1.0.1t”编译的标准包。

因此,我认为问题与“GnuTLS/2.12.14”或“GnuTLS/2.12.23”或编译它们的参数有关。

我尝试使用 CURL 常量 CURLOPT_SSLVERSION 限制 SSL 版本,但这并不能解决问题。

根据 www.ssllabs.com,相关主机 - api.reporting.cloud - 支持 TLS 1.2、TLS 1.1 和 TLS 1.0。

有人可以给我任何提示或指示吗?

最佳答案

此问题的解决方法是将 travis-ci 配置为使用标准 Ubuntu Trusty php5-cli 和 php5-curl 软件包。标准包提供 CURL_SSLVERSION_TLSv1_1 常量。

.travis.yml 文件如下所示:

sudo: required

dist: trusty

language: php

before_install:
- sudo apt-get -y install git zip php5-cli php5-curl

before_script:
- php -r "printf('PHP %s', phpversion());"
- composer self-update
- composer install --no-interaction

script:
- mkdir -p ./build/logs
- ./vendor/bin/phpunit

在 PHP 源代码中,在 travis-ci 执行 PHP 代码的情况下,只需设置上述常量即可:

if (getenv('TRAVIS')) {
$options['curl'][CURLOPT_SSLVERSION] = CURL_SSLVERSION_TLSv1_1;
}

此解决方法的缺点是它仅适用于 Ubuntu Trusty 提供的特定 PHP 版本 (PHP 5.5)。考虑到 PHP 5.5 已于 2016 年 7 月 10 日终止生命,此解决方案 Not Acceptable 。

travis-ci 更新到 Ubuntu 16.04 LTS 是理想的选择,但 travis-ci 基础设施经理 Brandon Burton wrote 2016 年 2 月 28 日:

Given that, we are currently focused on support 12.04 and 14.04 as our primary environments. At the moment, it is unlikely that we'll be supporting 16.04 as a native environment this year.

因此,我们似乎暂时只能使用 Ubuntu Trusty。

这个问题的根源在于,在 travis-ci 上运行的 PHP 版本是使用 2011 年起的 gnutls-cli (GnuTLS) 2.12.23 编译的。这个特定版本的 gnutls-cli 存在一些问题(但不是全部) ) TLS 1.2 连接。

@travis-ci:是否可以针对更现代的 GnuTLS 版本(或者至少是更好地支持 TLS 1.2 的版本)重新编译您使用的 PHP 版本?

关于php - curl 错误 35 : gnutls_handshake() failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38375211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com