为什么 wget 不验证 SSL 证书?

为什么 wget 不验证 SSL 证书?

我有我的Fedora 8安装。看起来wget不知道如何验证 SSL 证书。这很奇怪,因为我有另一个Fedora 8我相信该盒子具有相同的配置并且它可以工作!

我怎样才能让它在不使用开关的情况下工作--no-check-certificate

这是一个示例输出:

wget https://www.google.com
--2011-09-23 00:11:13--  https://www.google.com/
Resolving www.google.com... 74.125.230.146, 74.125.230.147, 74.125.230.148, ...
Connecting to www.google.com|74.125.230.146|:443... connected.
ERROR: cannot verify www.google.com's certificate, issued by `/C=ZA/O=Thawte Consulting (Pty) Ltd./CN=Thawte SGC CA':
  Unable to locally verify the issuer's authority.
To connect to www.google.com insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.

编辑

我有这个文件/etc/pki/tls/certs/ca-bundle.crt,当我运行时wget使用--ca-certificate指向此文件的开关,一切正常。这个文件应该放在哪里,这样我就不需要使用开关了?

顺便说一句:curl工作links正常,但lynx也有抱怨:“SSL 错误:无法获取本地颁发者证书”所以这不仅仅是wget的问题……

答案1

默认情况下,wget 将在 openssl conf 文件 /etc/pki/tls/openssl.cnf 中定义的路径中检查证书(不确定该路径对于 fc8 是否正确)。请检查 openssl 配置文件并确认路径正确。可能是 openssl 需要更正。

答案2

我遇到了 wget 找不到我的证书的问题,因此我安装了 ca-certificates

sudo apt install ca-certificates

然后我编辑了:

sudo vi /etc/wgetrc

并添加

ca_directory=/etc/ssl/certs

或者您也可以使用此命令将其附加到末尾:

printf "\nca_directory=/etc/ssl/certs" | sudo tee -a /etc/wgetrc

答案3

您的系统不信任 Google 证书的签名链。

他们也没有提供完整的证书链,只是提供颁发者的证书;不是 100% 符合标准,但肯定没有什么可以阻止您验证链。

您的古老系统可能有一套同样古老的受信任的根证书颁发机构。

信任正确的 VeriSign 证书 (这里),你应该表现得很好。

答案4

您需要收集您希望信任的根证书列表,并说明wget如何使用--ca-certificate或选项找到它们。如果您安装了适当的软件包,--ca-directory您可能已经有一个。/etc/pki/tls/certs

相关内容