添加额外的 SSL 证书以在 Cygwin 中识别

Jak*_*ake 7 cygwin certificate ssl windows-server windows-server-2008-r2

我有一个服务器设置,其中包含由主要证书提供商 (DigiCert) 颁发的 HTTPS 证书。该证书可被运行 Windows Server 2008 R2 的计算机上的所有浏览器识别,包括 Internet Explorer、Chrome 和 Firefox。

但是,该证书在 Cygwin 中不被认可。例如,当我尝试从此服务器克隆 git URL 时出现此错误:

error: SSL certificate problem: unable to get local issuer certificate while accessing [URL] fatal: HTTP request failed

我尝试过的 Cygwin 中的其他工具给出了相同的错误,例如 curl:

curl: (60) SSL certificate problem: unable to get local issuer certificate

Digicert 有我需要的确切证书。我的理想解决方案是更新 Cygwin 使用的证书包或手动安装所需的证书。Cygwin 似乎有一个与 Windows 不同的证书存储区。我怎样才能做到这一点?

注意:我不想简单地忽略错误,因为许多用户使用这台机器并且需要访问同一台服务器,所以每次都忽略是没有意义的。

Jar*_*kia 5

由于您的git-command 在内部使用 Curl,请尝试curl --verbose https://the-repo-URL查看会发生什么。

预期结果与您报告的错误相同:“ SSL 证书问题:无法获得本地颁发者证书”。同样在详细输出中应该有类似的内容: * successfully set certificate verify locations: CAfile: /etc/pki/tls/certs/ca-bundle.crt CApath: none

错误和以上输出转换为:您的存储库使用的 X.509 证书要么是自签名的,不受 Curl 信任,要么由不受 Curl 信任的证书颁发机构颁发。我们寻找信任锚的地方包括/etc/pki/tls/certs/ca-bundle.crt,但我们没有找到任何适用的地方。

要解决此问题:

  1. (这是棘手的部分)获取自签名证书,或颁发 CA 根证书
  2. 将 PEM 格式的 X.509 证书存储到目录 /etc/pki/ca-trust/source/anchors
  3. 运行命令update-ca-trust。使用管理员权限执行此操作。另请注意,此命令不输出任何内容。
  4. 完毕!测试。

更新

以上是有效的,但有一种更简单的方法可以完全做到以上几点。运行这个单一的命令:

trust anchor --store [the certificate PEM-file]
Run Code Online (Sandbox Code Playgroud)

完毕!测试。