Rus*_*vis 158 https cygwin wget certificate
例如,运行会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.
Run Code Online (Sandbox Code Playgroud)
DH4*_*DH4 231
如果您不关心检查证书的有效性,只需--no-check-certificate
在wget命令行中添加该选项即可.这对我很有用.
注意:这可以让您了解中间人(MitM)攻击,不建议您关注安全性.
Shn*_*sel 129
看看目前的hacky解决方案,我觉得我必须要描述一个合适的解决方案.
首先,您需要ca-certificates
通过Cygwin的setup.exe 安装cygwin软件包以获取证书.
不要使用curl或类似的黑客来下载证书(作为相邻的答案建议),因为这从根本上是不安全的,可能会危及系统.
其次,您需要告诉wget您的证书在哪里,因为它在Cygwin环境中默认不会提取它们.如果您可以使用命令行参数--ca-directory=/usr/ssl/certs
(最适合shell脚本)或添加ca_directory = /usr/ssl/certs
到~/.wgetrc
文件来执行此操作.
您也可以通过ln -sT /usr/ssl /etc/ssl
在另一个答案中指出的方式运行来解决这个问题,但只有在您拥有对系统的管理访问权限时才会有效.我描述的其他解决方案不需要这样.
cgu*_*her 100
如果问题是缺少已知的根CA,并且当您使用ubuntu或debian时,则可以使用以下一行解决问题:
sudo apt-get install ca-certificates
Run Code Online (Sandbox Code Playgroud)
Rus*_*vis 13
首先,需要安装SSL证书.说明(基于/sf/answers/311832811/):
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
Run Code Online (Sandbox Code Playgroud)
以上内容足以修复curl
,但wget
需要额外的符号链接:
ln -sT /usr/ssl /etc/ssl
Run Code Online (Sandbox Code Playgroud)
可能这会有所帮助:
wget --no-check-certificate https://blah-blah.tld/path/filename
Run Code Online (Sandbox Code Playgroud)
我有类似的问题并通过暂时禁用我的防病毒软件(卡巴斯基免费版 18.0.0.405)来修复它。该反病毒软件具有 HTTPS 拦截模块,可以自动对其在 HTTPS 响应中找到的所有证书进行自签名。
Cygwin 的 Wget 对 AV 根证书一无所知,因此当它发现网站的证书是用不信任证书签名时,它会打印该错误。
要永久修复此问题而不禁用 AV,您应该将 AV 根证书从 Windows 证书存储复制为/etc/pki/ca-trust/source/anchors
.pem 文件(base64 编码)并运行update-ca-trust