为了账号安全,请及时绑定邮箱和手机立即绑定

Guzzle (35) gnutls_handshake() 失败:通过 HTTP 收到了意外的

Guzzle (35) gnutls_handshake() 失败:通过 HTTP 收到了意外的

PHP
慕慕森 2021-08-28 16:24:18
我从我的服务器向其他服务器(http://example.com:8180)发送了一个 api 请求,我收到了这个错误“cURL 错误 35:gnutls_handshake() 失败:收到了意外的 TLS 数据包。”奇怪的是,当我在我的本地和舞台服务器上测试时,没有任何问题。生产服务器和舞台服务器的区别在于ssl的存在。但这可能是问题吗??我有点相信它是关于“php curl”的,因为 guzzle 在代码中不起作用,但是 curl 命令可以,我在代码中使用了 curl 而没有 guzzle 但仍然没有工作。我设置CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST错误但仍然没有工作。只要我知道 SSL 无关紧要,因为我尝试通过 HTTP 连接到服务器,对吗?下面是我编译的 php、curl、服务器信息PHP Version => 7.2.1System => Linux ip-x-x-x-x 4.4.0-1060-aws #69-Ubuntu SMP Sun May 20 13:42:07 UTC 2018 x86_64Build Date => Jan 31 2019 05:39:24Configure Command =>  './configure'  '--enable-fpm' '--with-openssl' '--with-pdo-mysql' '--enable-mbstring' '--with-libxml-dir' '--enable-intl' '--with-gettext' '--with-mhash' '--with-gd' '--with-pcre-jit' '--with-zlib' '--enable-bcmath' '--enable-calendar' '--with-zlib-dir' '--with-curl' '--enable-zip'curlcURL support => enabledcURL Information => 7.47.0Age => 3FeaturesAsynchDNS => YesCharConv => NoDebug => NoGSS-Negotiate => NoIDN => YesIPv6 => Yeskrb4 => NoLargefile => Yeslibz => YesNTLM => YesNTLMWB => YesSPNEGO => YesSSL => YesSSPI => NoTLS-SRP => YesHTTP2 => NoGSSAPI => YesKERBEROS5 => YesUNIX_SOCKETS => YesPSL => NoProtocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, smb, smbs, smtp, smtps, telnet, tftpHost => x86_64-pc-linux-gnuSSL Version => GnuTLS/3.4.10ZLib Version => 1.2.8
查看完整描述

2 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

问题已经解决了。

我使用 laravel 并且有一个黑盒,它是 route() 辅助函数它根据服务器配置设置 url http 或 https,生产服务器设置为 https

这就是它导致错误的原因。


查看完整回答
反对 回复 2021-08-28
?
开满天机

TA贡献1786条经验 获得超13个赞

仅供参考此错误,这可能对某些人有所帮助。我在带有 apache 服务器的 ubuntu 机器上遇到了类似的问题,我通过使用链接创建自签名证书解决了这个问题


< HTTP/1.1 200 Connected

<

* Proxy replied OK to CONNECT request

* found 127 certificates in /etc/ssl/certs/ca-certificates.crt

* found 508 certificates in /etc/ssl/certs

* ALPN, offering http/1.1

* gnutls_handshake() failed: An unexpected TLS packet was received.

* Closing connection 0

curl: (35) gnutls_handshake() failed: An unexpected TLS packet was received.

如果您正在使用 curl 并面临以下错误,即使在创建证书并启用它之后,您也可以--cacert <certificate name>在 curl 命令中使用。


错误 : curl: (60) server certificate verification failed.


尝试这个 : curl --cacert <certificate_name>.crt https://<your IP>:<Port>


查看完整回答
反对 回复 2021-08-28
  • 2 回答
  • 0 关注
  • 487 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信