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

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

我有一个服务器设置,该服务器具有由主要证书提供商 (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 不同的证书存储区。我该怎么做?

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

答案1

由于您的git命令在内部使用 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]

完成!测试。

相关内容