Ubuntu 20.04
我使用 lftp 连接到服务器(ftp.domain.xxx)。
我收到“证书验证:无法获取本地颁发者证书”。
读完这个答案 https://stackoverflow.com/a/44095714/3206025 我补充道
set ssl:ca-file "/etc/ssl/certs/ca-certificates.crt
在~/.lftp/rc
启动 lftp 时,都要确保一切正常。
但问题依然发生。
所以我认为它/etc/ssl/certs/ca-certificates.crt
不包含证书/不足以工作。
我认为该证书是通过真正的加密机制生成的。
Ubuntu 是否能够识别 let's encrypte 证书(在 Firefox 之外)。
我该如何解决我的问题?
答案1
问题不是由客户端的错误设置引起的,而是由服务器的错误设置引起的。服务器仅提供叶证书,而不提供创建本地根 CA 信任路径所需的链证书 - 请参阅SSL 证书框架 101:浏览器实际上如何验证给定服务器证书的有效性?更多信息(该帖子涉及浏览器,但对于 FTP 客户端也是一样的)。
可以通过以下方式确定错误的设置openssl s_client
:
$ openssl s_client -connect lautre.net:21 -starttls ftp
...
Certificate chain
0 s:/CN=lautre.net
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
...
Verify return code: 21 (unable to verify the first certificate)
从这里可以看出,服务器仅发送叶证书。正确的设置应该是这样的:
$ openssl s_client -connect some-other-server
...
Certificate chain
0 s:/CN=some-other-server
i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
i:/O=Digital Signature Trust Co./CN=DST Root CA X3
...
Verify return code: 0 (ok)
这里提供了预期的链证书,Let's Encrypt Authority X3
以便可以针对本地根 CA 创建信任链DST Root CA X3
。