如何在Cygwin的HTTPS URL上运行wget时修复证书错误?
例如,运行wget https://www.dropbox.com
导致以下错误:
ERROR: The certificate of `www.dropbox.com' is not trusted. ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
在这里看一下目前的解决scheme,我觉得我必须要描述一个合适的解决scheme。
首先,你需要通过Cygwin的setup.exe来安装cygwin软件包的ca-certificates
来获得证书。
不要使用curl或类似的黑客来下载证书(作为邻居的答案build议),因为这基本上是不安全的,可能会危及系统。
其次,你需要告诉wget你的证书在哪里,因为它在Cygwin环境中默认没有select它们。 如果可以使用命令行参数--ca-directory=/usr/ssl/certs
(最适合shell脚本)或者将ca_directory = /usr/ssl/certs
到~/.wgetrc
文件来~/.wgetrc
操作。
您也可以通过运行ln -sT /usr/ssl /etc/ssl
来解决这个问题,正如在另一个答案中指出的那样,但只有当您具有对系统的pipe理访问权限时才能工作。 我描述的其他解决scheme并不需要。
如果您不关心检查证书的有效性,只需在wget命令行中添加--no-check-certificate
选项。 这对我很好。
注意:这会使您面临中间人(MitM)攻击,不build议您关心安全性的任何事情。
如果问题是一个已知的根CA丢失,当你使用Ubuntu或Debian,那么你可以用这一行解决问题:
sudo apt-get install ca-certificates
首先,需要安装SSL证书。 说明(基于https://stackoverflow.com/a/4454754/278488 ):
pushd /usr/ssl/certs curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}' c_rehash
以上就足以解决curl
,但wget
需要额外的符号链接:
ln -sT /usr/ssl /etc/ssl
做就是了
apt-get install ca-certificate
如果你正在使用Windows只是去控制面板,点击自动更新然后单击Windows更新网站链接。 只要按照步骤。 至less这对我来说,没有更多的证书问题,即每当我像以前一样去https://www.dropbox.com 。