GET 请求在浏览器中工作,但在 curl 中给出错误 SSL_ERROR_SYSCALL

Posted

技术标签:

【中文标题】GET 请求在浏览器中工作,但在 curl 中给出错误 SSL_ERROR_SYSCALL【英文标题】:GET Request working in browser but giving error SSL_ERROR_SYSCALL in curl 【发布时间】:2019-07-15 20:58:14 【问题描述】:

当我将请求发送到https://DOMAIN:443/path 时,它在我尝试过的每个网络浏览器中都能正常工作。但是当涉及到 curl(和 wget)时,我得到了一个错误。我已经重新编译了 openssl 和 curl(最新版​​本),没有改变。

curl -vv https://DOMAIN:443/path

输出 ​* TCP_NODELAY 设置 * 连接到 DOMAIN (IPADDRESS) 端口 443 (#0) * ALPN,提供 h2 * ALPN,提供 http/1.1 * 成功设置证书验证位置: * CAfile:/etc/ssl/certs/ca-certificates.crt CApath:无 * TLSv1.3 (OUT)、TLS 握手、客户端问候 (1): * OpenSSL SSL_connect: SSL_ERROR_SYSCALL 连接到 DOMAIN:443 * 关闭连接 0 curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL 连接到 DOMAIN:443

卷曲版

curl 7.61.0 (x86_64-pc-linux-gnu) libcurl/7.61.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.5 libpsl/0.20.2 (+libidn2/2.0.4) nghttp2/1.32.1 librtmp/2.3
Release-Date: 2018-07-11
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL

感谢您的帮助。

【问题讨论】:

我也遇到这种错误 *正在尝试 58.71.19.141... * TCP_NODELAY 设置 * 已连接到 so.ngcp.ph (58.71.19.141) 端口 8081 (#0) * ALPN,提供 http/1.1 * 由于禁用对等验证而忽略证书验证位置 * OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to so.ngcp.ph:8081 * 停止了暂停流! * 关闭连接 0 【参考方案1】:

我提到的错误可能发生在防火墙阻止 Curl 和 wget 连接时。该理论得到以下事实的支持:

我在使用不同的操作系统、配置、IP 地址时收到了同样的错误,结果是一样的。 基于浏览器的请求成功。 使用 curl 和 wget 的替代品效果很好(我使用了 aria2 和 kurly)

所以,问题为我解决了。我希望这个答案可以帮助任何面临同样问题的人。

【讨论】:

以上是关于GET 请求在浏览器中工作,但在 curl 中给出错误 SSL_ERROR_SYSCALL的主要内容,如果未能解决你的问题,请参考以下文章

PHP Curl 请求不起作用,但在 POSTMAN 中工作正常

“GET”请求在 Python 中工作,但在机器人框架中不起作用

GET API 在浏览器中显示 KeyError,但在 Postman 中工作

无法让 cURL 或 file_get_contents 在 PHP 中工作

Jenkins webbook 在 Bitbucket 中失败,但在 curl 中工作正常

让请求在 curl 中工作,但不在 Python 中