Curl错误35:握手失败,SSL/TLS连接失败。

5

当我尝试执行这个curl命令:

curl -v --key some_key_file.key --cert certificate_file.pem --show-error --header "Content-Type: application/json;charset=UTF-8" https://some-api/service

我得到了以下错误信息:curl: (35) schannel: failed to receive handshake, SSL/TLS connection failed

完整的执行日志如下:

enter image description here

我在网上搜索了这个错误,但没有找到任何人解释它真正的含义。

  • 你有任何想法是什么导致了这个错误吗?
  • 你知道是否有一种方法可以获得关于错误更多的信息吗?

1
请勿发布图像文本。至于您的问题:仅根据此输出很难确定,但可能是服务器未正确配置以在此端口上支持HTTPS。但也可能是某些DPI防火墙阻止了流量。您是否尝试使用完全相同的系统中的另一个客户端(例如浏览器)并成功了吗? - Steffen Ullrich
@Steffen 我尝试在Chrome上输入URL,但显然连接被拒绝了,因为我无法提供我的特定证书。 - Lucas Charbonnier
可以使用Chrome导入客户端证书,即您应该能够导入它以进行测试。 - Steffen Ullrich
4个回答

2
原来问题出在我的curl版本上,某种原因导致它不接受--cert和--key参数。
为了解决这个问题,我安装了一个全新的curl版本,并从安装文件夹中运行它,问题得到了解决。

2

在你安装了curl包的路径下运行该命令。 如果你将其放在c:\curl中,请进入该路径并运行curl命令,它将正常工作。


1

当你处于七层防火墙(例如Palo Alto)后,只允许通过应用程序进行SSL连接时,就会出现此错误,因此您需要在这种解决方案中配置2个规则。

  1. 允许具有更高优先级的443端口或其他端口
  2. 允许较低优先级的应用程序SSL

0

我也尝试安装最新的curl(如下所示),但它没有解决我的问题。

curl 7.77.0(x86_64-pc-win32)libcurl/7.77.0 OpenSSL/1.1.1k(Schannel) zlib/1.2.11 brotli/1.0.9 zstd/1.5.0 libidn2/2.3.1 libssh2/1.9.0 nghttp2/1.43.0 libgsasl/1.10.0 Release-Date: 2021-05-26 Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz MultiSSL NTLM SPNEGO SSL SSPI TLS-SRP Unicode UnixSockets zstd


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接