我在 Debian wheezy 服务器上,尝试通过 https 下载东西,但没有成功。
当我尝试使用 时curl
,它通过示例给出了这个答案:
curl: (60) SSL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
More details here: http://curl.haxx.se/docs/sslcerts.html
wget
给了我类似的东西:
ERROR: cannot verify www.domain.com’s certificate, issued by “/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 High Assurance Server CA”:
Unable to locally verify the issuer’s authority.
当我执行命令时,openssl s_client -showcerts -connect www.facebook.com:443
我会收到答案
verify error:num=20:unable to get local issuer certificate
,但是当我执行
openssl s_client -CApath /etc/ssl/certs/ -showcerts -connect www.facebook.com:443
命令时,效果很好。
所以我认为有一个环境变量没有设置,因为当我设置公钥的路径时我可以执行证书检查。
我需要做什么才能修复它?
提前致谢!
答案1
您没有处理错误配置。
Wheezy 可能已经显露出它的年龄了。证书CA公有根链可能现在大部分已经过期,并且 openssl/libSSL 正在使用过时的协议。
解决这个问题最简单的方法是升级到最新的 Debian 版本,也是因为 Wheezy 是 2013 年的版本,自 2018 年 5 月 31 日起就已经停产。(或者换句话说,有些人已经在计划/测试他们很快迁移到 Debian 10而 Wheezy 则有 3 个版本,落后了 5 年)
您也可以尝试使用curl -k
或wget --no-check-certificate
忽略证书检查,它可能会起作用。
您甚至可以尝试按照 @GAD3R 的建议更新证书(不知道它是否能解决您的问题),或者手动安装 Digicert 根 CA 证书。 (fb证书是用Digicert签名的)
然而,使用这样的 Debian 旧版本,您将会遇到其他安全问题,并且还要处理 SSL,因此,如果可以的话,您应该升级它。