在 opam 中跳过 wget 证书检查

Skip wget certificate checking in opam

我刚刚更新到 opam 2,在我无法更新的非常旧的 MacBook (运行 OS X 10.6.8) 上,它缺少一些与证书验证相关的重要包 (由于缺少工具,我什至无法更新 Homebrew,因为它需要认证......有点循环问题)。

我想在不检查证书的情况下更新 opam,否则会出现以下错误:

<><> Updating package repositories ><><><><><><><><><><><><><><><><><><><><>   
[ERROR] Could not update repository "default": 
OpamDownload.Download_fail(_, "Download command failed: 
  \"/usr/local/bin/wget --content-disposition -t 3 -O 
    /private/tmp/opam-17621-5a61c5/index.tar.gz.part
    https://opam.ocaml.org/1.2.2/index.tar.gz -U opam/2.0.0\"
  exited with code 5 
  \"ERROR: cannot verify opam.ocaml.org's certificate, issued by
  'CN=Let\'s Encrypt Authority X3,O=Let\'s Encrypt,C=US':\"")

我刚刚能够从 1.2.2 升级到 opam 2.0.0,但现在我无法做到 opam update。没有它,我无能为力。

有没有办法将选项 --no-check-certificate 传递给 opam 使用的 wget 命令,而无需自己重新编译它?

改为修复您的 wget。好像缺少最近的 CA 捆绑包。

首先,检查它在哪里寻找包 -

$ strace wget -O /dev/null https://github.com 2>&1 | grep cert

read(3, "eting an end user certificate as"..., 4096) = 2806
read(5, "eting an end user certificate as"..., 4096) = 2806
openat(AT_FDCWD, "/usr/lib/ssl/cert.pem", O_RDONLY) = -1 ENOENT (No such file or directory)

然后复制 Mozilla's .pem bundle 以匹配预期的 .pem 路径。

如果您使用的系统缺少 strace 或者在输出中根本没有提及 CA 捆绑包位置,请尝试创建一个 .wgetrc,然后添加

ca_certificate = /path/to/your/ca-bundle.pem

另存为$HOME/.wgetrc.

wget 然后应该能够验证 Let's Encrypt 证书。

更多关于 .wgetrc 的信息在 http://gnu.org/software/wget/manual/html_node/Wgetrc-Commands.html