尽管-不安全并且没有代理,但是curl错误:ssl3_get_record:版本号错误

时间:2019-03-01 14:30:51

标签: ssl curl ftps ftp-server

我正在使用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

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

  • 我没有使用代理
  • 即使--insecure也会失败,因此它不是证书信任问题
  • 我也尝试过--cacert,不起作用
  • --tls-max 1.2会将版本更改为1.2,但不会更改任何内容

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

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

提供证书,这样看来还可以。

我可以通过Nautilus成功连接,但是警告我有关证书,颁发者不明。

非常感谢您提供其他尝试提示。

1 个答案:

答案 0 :(得分:0)

此案实际上涉及两个问题。

1)ftps是仅支持 explicit tls 的服务器的错误协议。

正确的协议为ftpes。如果curl不支持它,则可以使用--ssl-reqd强制执行TLS,或者仅使用--ssl

git-ftp 上下文中,即使没有ftpes编译curl,它也可以工作。

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

当前为ftp certificate bug in plesk

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

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