尽管 --insecure 和 w/o 代理卷曲错误:ssl3_get_record:wrong 版本号

curl error despite --insecure and w/o proxy: ssl3_get_record:wrong version number

我正在使用 git-ftp 部署一些网站,但我无法通过 TLS 建立连接。

curl -vv --insecure ftps://linux12.unixserver.org:21
* Rebuilt URL to: ftps://linux12.unixserver.org:21/
*   Trying 212.63.145.118...
* TCP_NODELAY set
* Connected to linux12.unixserver.org (212.63.145.118) port 21 (#0)
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number

我已经找到了其他几个问题,但我的问题不匹配。

一些消息来源指出,当服务器根本不提供证书时也会发生此错误。

openssl s_client -connect linux12.unixserver.org:21 -starttls ftp

发个证书,好像还行吧

我可以通过 Nautilus 成功连接,但它警告我关于证书,颁发者未知。

非常感谢您提供关于还可以尝试什么的任何提示。

这个案例其实涉及到两个问题。

1) ftps 是仅支持 explicit tls.

的服务器的错误协议

正确的协议是ftpes。如果 curl 没有编译支持它,你可以使用 --ssl-reqd 来强制 TLS,或者只是 --ssl.

git-ftp 的上下文中,即使编译了 curl w/o ftpes.

2) 服务器未提供有效的证书链,因此无法验证证书。

目前这是 ftp certificate bug in plesk

解决方案是手动检索证书链并通过--cacert <file>提供链。如果是自签名的,提取 public 密钥并使用 --pinnedpubkey <file>.

非常感谢 Daniel Stenberg 的正确提示。