如何在cygwin(和一些linux发行版)上向git添加企业证书颁发机构(CA)

如何在cygwin(和一些linux发行版)上向git添加企业证书颁发机构(CA),git,ssl,cygwin,certificate,ca,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 证书已添加到/etc/ssl/certs/ca bundle.crt和,但在下一次Cygwin更新时,问题再次出现。git re

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

Fetching origin
fatal: unable to access 'https://.../...git': SSL certificate problem: self signed certificate in certificate chain
error: Could not fetch origin

证书已添加到
/etc/ssl/certs/ca bundle.crt
和,但在下一次Cygwin更新时,问题再次出现。

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

/etc/ssl/certs/ca-bundle.crt
/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
如果编辑这些文件,则每次运行Cygwin安装程序并更新包时,这些文件都将被覆盖

正确/正确的解决方案是将证书添加到拾取目录并运行拾取脚本,更新ca信任:

curl -sL http://ca.pdinc.us  > /etc/pki/ca-trust/source/anchors/ca.pdinc.us.pem \
&& update-ca-trust
ca证书包的安装后脚本将在每次升级时自动重新运行更新ca信任脚本。有关更多信息:

man update-ca-trust
更简单的说明:

  • 只需使用您企业的可信证书(例如,
    .crt
    文件)复制文件,并将其复制到目录
    /etc/pki/ca-trust/source/anchors/

  • 运行
    更新ca信任提取
    。这将生成各种文件,使一切正常工作

  • 您可以在目录中添加或删除文件,然后重新运行
    update ca trust extract

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


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

    命令
    curl-sL
    应该做什么?它是http URL,因此显然无法从上下文中获得预期的证书链。在当前版本中,
    git remote https
    /mingw64/ssl/certs/ca bundle.crt
    读取证书,因为这是在
    /c/programmadata/git/config
    中配置的。
    /mingw64/bin/update ca-trust
    /usr/bin/update ca-trust
    都不更新该文件,因此脚本没有用处。截至今天的更新,我还没有找到哪一个是正确的。@JanHudec,自2014年以来,情况似乎并非如此。您使用的是什么git-version(git version 2.8.3)和uname-a(CYGWIN_NT-6.1-WOW black7 2.6.1(0.305/5/3)2016-12-16 11:50 i686 CYGWIN?
    git version 2.11.0.windows.3
    MINGW64_NT-6.1 ntb1005941 2.6.1(0.306/5/3)2017-01-14 09:41 x86\u 64 Msys
    。好啊我没有意识到你实际上使用的是cygwin版本的git,我一直使用cygwin的原生版本,因为我需要原生应用程序来使用它。注意,由于msys2是cygwin的一个分支,所以两者都有脚本。实际上,msys2有三个副本,一个用于msys,一个用于mingw32,一个用于mingw64。无论如何,git安装都不会使用它。如果运行
    git\u CURL\u VERBOSE=true git clone,那么该git不是Cygwin githttps://google.com
    并查找
    CAfile
    CApath
    我的linux上没有此路径/etc/pki/ca trust/source/anchors/