我正在使用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成功连接,但是警告我有关证书,颁发者不明。
非常感谢您提供其他尝试提示。
答案 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的正确提示。