我在ubuntu终端上点击我的curl,得到这个响应curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to domain.com:443
。我真的不明白为什么会发生这种情况。我试图显示curl的错误号,但它没有恢复任何no。我正在点击另一个服务器。下面是我的命令:
./curl -i --tlsv1.2 -kv -H "Content-Type: application/xml" --verbose -X POST --data /var/www/html/xml.xml --cacert /root/curl_ssl/curl-7.54.1/src/cert_org.crt domain.com/otp
请提出一些帮助。
6条答案
按热度按时间xqnpmsa81#
对于使用旧SSL协议的站点,Linux上的CURL可能会出现此错误。根据SSL/TLS协议规范,原因可能是客户端hello使用了对等方不支持的支持组选项。解决方案是使用sslscan进行探测,并获取对等方支持的协议版本和密码套件。SSLscan (Github)
dced5bon2#
当在虚拟机中使用Docker时,问题也可能是由HTTP服务器路径中不一致的MTU-s引起的。
进入
/etc/docker/daemon.json
(make确保运行
systemctl restart docker
以使更改生效)在我的例子中,有一个OpenStack VM在其接口上使用1450的MTU,但是Docker映像仍然创建了MTU为1500的虚拟接口。
如果curl在客户端hello之后挂起,则会出现MTU问题:
https://unix.stackexchange.com/questions/252977/curl-hangs-after-client-hello
isr3a4wc3#
我最近在连接到服务器上的微服务时遇到了这个问题。一切似乎都很好,它应该工作,但没有。错误代码是:
找到了根本原因。
这几乎可以肯定是其他人遇到的相同问题。一点背景知识......服务器是一个自定义服务器,它使用SSL SNI信息来推断它应该将TLS连接路由到哪个微服务。事件的顺序是:
1.检查SNI,未启动TLS会话。
1.已打开新套接字以侦听微服务。
1.原始握手包作为TCP/TLS连接转发到微服务。
在我的例子中,由于错误的SNI信息和错误配置的后端的组合错误,代理服务器无法找到正确的端点。因此,代理在握手过程中关闭了套接字,您会得到错误35。
我怀疑这种情况会发生在HAProxy非终止连接中,例如:前端拾取、检查SNI,TCP后端未配置、找不到,或者后端服务未运行且无法连接。
对于那些有这个问题,请确保上述所有设置都正确。在我的情况下,这是一个单一的字符输入错误导致的悲伤。想必其他问题,如一个坏的证书也可能导致类似的错误。我已经得到了28,35,和其他一些。所有相关的,一旦配置正确就解决了。
希望这个有用。
gt0wga4j4#
问题是站点只支持不再被视为安全的密码,即基于3DES和RC 4的密码。出于安全原因,ssl库中的默认密码不包括这些密码。
要添加对这些密码的支持,您可以手动设置默认密码套件。下一行将DES-CBC 3-SHA设置为建议的密码。
curl --cipher DES-CBC3-SHA <your parameters>
**对所有站点使用此选项并不安全。**请注意,此选项应仅用于此旧站点。
vnzz0bqm5#
我在尝试 curl git url时也遇到过类似的问题。
我查的是这个。
在与网络团队交谈后,他们说,由于这是一个本地Intranet URL,因此没有必要通过代理将其隧道化。
所以从计算机上的环境变量中删除代理解决了这个问题。如果你需要更多的澄清,让我知道。
bwntbbo36#
如果你从一个nginx服务器上请求,而该服务器希望在反向代理(使用proxy_protocol)之后,你应该在curl命令中添加
--haproxy-protocol