如何在cygwin(以及一些Linux发行版)上添加企业证书颁发机构(CA)到git

Jas*_*ron 8 git ssl cygwin certificate ca

在Cygwin上使用git获取时,您会得到:

Fetching origin
fatal: unable to access 'https://.../...git': SSL certificate problem: self signed certificate in certificate chain
error: Could not fetch origin
Run Code Online (Sandbox Code Playgroud)

该证书被添加到/etc/ssl/certs/ca-bundle.crt其他捆绑的文件,但在接下来的Cygwin更新的问题又出现了.

Jas*_*ron 13

git-remote-https 将读取ca证书的以下文件:

/etc/ssl/certs/ca-bundle.crt
/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
Run Code Online (Sandbox Code Playgroud)

如果您编辑这些文件,则每次运行Cygwin安装程序时都会覆盖它们,并且ca-certificates软件包有更新.

正确/正确的解决方案是将证书添加到提取目录并运行提取脚本update-ca-trust:

curl -sL http://ca.pdinc.us  > /etc/pki/ca-trust/source/anchors/ca.pdinc.us.pem \
&& update-ca-trust
Run Code Online (Sandbox Code Playgroud)

ca-certificates软件包的安装后脚本将在每次升级时自动重新运行update-ca-trust脚本.欲获得更多信息:

man update-ca-trust
Run Code Online (Sandbox Code Playgroud)

  • 那个 git 不是 Cygwin git,如果你运行 `GIT_CURL_VERBOSE=true git clone https://google.com` 并寻找 `CAfile` 或 `CApath` (2认同)

小智 5

更简单的说明:

  1. 只需复制带有企业受信任证书的文件(例如.crt文件)并将其复制到目录中即可/etc/pki/ca-trust/source/anchors/

  2. 跑步update-ca-trust extract。这将生成各种文件以使一切正常工作。

您可以添加或删除目录中的文件并重新运行update-ca-trust extract

注意:如果您的组织是少数使用扩展BEGIN TRUSTED文件格式的专用证书的组织之一(可能包含不信任/黑名单信任标志,或用于 TLS 以外用途的信任标志),则步骤 1 中会有细微的变化。基本上,将证书复制到该目录/etc/pki/ca-trust/source/中。将它们复制到“常用”位置并在“常用”目录不起作用时稍后移动它们并没有什么坏处。

有关更多详细信息,请运行man update-ca-trust.