【问题标题】:Unable to connect curl on HTTPS无法在 HTTPS 上连接 curl
【发布时间】:2019-08-02 17:48:24
【问题描述】:

我正在尝试使用 curl (https) 从服务器 A 连接到服务器 B。我已经尝试过 -k 并且它不起作用。

我查看了几篇帖子,并在 link 上发现了博客,但问题仍然存在。

当我从服务器 A 执行 curl 时,出现以下错误:

* Rebuilt URL to: https://x.x.x.x:8443/
* Hostname was NOT found in DNS cache
*   Trying x.x.x.x...
* Connected to x.x.x.x (x.x.x.x) port 8443 (#0)
* successfully set certificate verify locations:
*   CAfile: /tmp/cert_test/certRepo
  CApath: /etc/ssl/certs/
* SSLv3, TLS handshake, Client hello (1):
* error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol
* Closing connection 0
curl: (35) error:140770FC:**SSL routines:SSL23_GET_SERVER_HELLO:**unknown protocol

我从浏览器进入服务器 B (https://x.x.x.x:8443/) 并下载了根证书、中间证书和客户端证书。按照博客中的建议,我创建了一个新文件夹并将所有公共证书合并到一个目录中并尝试执行 curl 命令

curl -v --cacert /tmp/cert_test/certRepo https://x.x.x.x:8443

我得到 GET_SERVER_HELLO:unknown protocol

有什么想法吗?

来自客户端机器的 Curl 版本:

curl 7.37.0 (x86_64-suse-linux-gnu) 
libcurl/7.37.0 OpenSSL/0.9.8j 
zlib/1.2.7 
libidn/1.10
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet 
tftp 
Features: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz 

我非常确定 服务器 正在使用 TLSv1.2。

【问题讨论】:

  • "GET_SERVER_HELLO:unknown protocol" 通常意味着您正在连接到根本不使用 TLS 的东西。确保它配置正确。这不可能是证书问题,因为这是在此之后发生的,您的客户端在这里发送了它的 ClientHello TLS 记录,并期望返回一个 ServerHello TLS 记录,但是却是垃圾(不是 TLS)。 HTTPS url 中的 IP 地址也不是一个好主意。这与编程不是很相关,所以这里暂时离题。
  • @PatrickMevzek 服务器确实理解 TLS v 1.2,因为其他应用程序正在正确连接到它。有什么方法可以在 CURL、TLS 版本中指定吗?
  • @PatrickMevzek 我已经使用主机名完成了设置,不再使用 IP 地址。
  • @PatrickMevzek 我注意到:SSLv3,TLS 握手,客户端你好(1):,服务器理解....可能是 curl 使用的是 sslv3 而服务器只理解 TLS v1.2 ?有什么想法吗?
  • 能否添加测试https://x.x.x.x:8443/ 的输出,由github.com/drwetter/testssl.sh 制作,好吗?将列出所有支持的 TLS 版本/密码。

标签: ssl curl


【解决方案1】:

您没有发布您的 curl/libssl 版本,但我最好的猜测是您使用的是 ssl/tls 库的古老版本,和/或不支持任何 ssl/ 版本的 curl 的古老版本tls 为我们服务 ysubg。更新您的 libssl 和 curl 并重试。同时发布curl --version的输出。

PS,如果你在linux上,你可以得到粗略的curl+openssl编译指令here

【讨论】:

  • 使用来自服务器的 CURL 客户端版本和 TLS 版本更新了我的问题。根据您的经验,您认为这是因为客户端和服务器之间的版本不匹配吗?我可以从服务器上找到任何其他有助于进一步帮助的信息吗?
  • @user3384231 curl 版本 7.37.0 是从 2014 年开始的,已经 5-6 岁,更新到 2019 版本并重试...
  • 好的。我将与管理员核实,因为我没有更新 curl 版本的访问权限。谢谢。会让你知道的。
  • @user3384231 你必须使用操作系统提供的 curl 版本吗?您不能在自己的文件夹中添加自己的 curl 吗? (如果系统管理员不想更新,至少)
  • 是的,我有这个选项。我会检查他们是否可以让我在自己的目录中安装 curl。
猜你喜欢
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-17
  • 2016-05-08
  • 2014-07-18
  • 1970-01-01
相关资源
最近更新 更多