推到Git的服务器时,SSL凭证无效

问题描述 投票:26回答:6

我在Windows Server上运行Gitblit,我试图将数据从另一台机器推到一个存储库的网络上。我已经使用了SSL证书(而不是自签名,但我认为由我公司签约?不能确定如何工作的,但Chrome浏览器,IE,等看到它是身份验证)。

运行Gitblit的服务器名为itscm和开发人员的桌面上,我使用这个URL通过TortoiseGit推动数据:

git.exe push --progress  "https://itscm:8234/git/TestRepo.git" master

不过,我得到这个错误:

致命的:无法访问“https://itscm:8234/git/TestRepo.git/”:SSL证书问题:在自我证书链签名证书

当我去到Chrome浏览器的地址,我得到的页面上404,但我可以看到,在地址栏的挂锁是绿色的。当我点击挂锁我看到的身份验证。我不明白我的浏览器是如何看待这个证书作为有效的,但是当我试图通过GIT中数据推它,它失败。

git ssl credentials tortoisegit gitblit
6个回答
31
投票

Git的用于Windows的正常情况下位于文件中的受信任的证书自己的信任存储

  • GIT中的Windows <= 1.9:[Git installdir]\bin\curl-ca-bundle.crt(例如,C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt;可以通过在http.sslCAinfo密钥[Git installdir]\etc\gitconfig配置)。
  • GIT中用于Windows> = 2.0:[Git installdir]\mingwXX\ssl\certs\ca-bundle.crt其中XX代表3264(例如,C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt;可以通过在http.sslCAinfo密钥C:\ProgramData\Git\config配置)。

禁用证书检查(例如,通过设置git config http.sslVerify false)是不是一个好主意,可能是非常危险的(因为所有的安全检查被禁用,MitM attacks是容易实现 - 这取决于在那里,这是设置适用于所有新的HTTPS连接)。

为了添加证书(可以说,它是一个自签名的一个或另一个根证书),以便自动信任它这个信任存储,你必须执行以下步骤:

  1. 打开网站的URL在Internet Explorer中
  2. 在当地的酒吧点击锁符号,并选择“显示证书”(或选择网站的属性,点击“证书”)
  3. (可选)选择您想要的证书链(第三个选项卡)信任证书并将其打开
  4. 转到第二个选项卡“详细信息”
  5. 点击“保存到文件”,选择“Base64编码X.509(.CER)”,并以唯一的名称保存它(记住这个名字;名字W / O空间被推荐)。
  6. 现在,你有几种选择 使用一个单独的证书信任库只包含您刚刚下载证书,通过按顺序在CLI壳执行git config --global http.sslCAinfo "[yourfilename]"只使用此证书作为信任存储区。 使用一个单独的证书信任库,其中包含您刚刚下载证书,并从git的信任存储中的所有证书,由系统信任存储文件附加的所有内容(路见上文),然后在命令行外壳,才能使用这个新的执行git config --global http.sslCAinfo "[yourfilename]"信任存储。 更新系统的证书文件,通过附加您刚才保存的文件,以[path-to-git-trust-store-crt-file](例如,通过在命令行外壳具有管理权限运行type [yourfilename] >> [path-to-git-trust-store-crt-file])或使用记事本的内容(请在桌面上的CA-bundle.crt文件的副本,追加该downlaoded .crt文件的内容,然后将它复制回)。缺点:变化可能会覆盖上git的更新

完成。现在,这个证书是在Git中for Windows的信任存储区。


23
投票

TortoiseGit可能是没有使用相同的信任浏览器。我觉得Chrome使用的系统存储,Firefox使用它自己的。我不知道TortoiseGit使用。

在客户端,如果你设置git config http.sslVerify false你可能有更多的运气。您也可以set this globally


3
投票

这里是我工作。创建一个文件夹C:\GitCerts。然后下载Base64 .cer文件(遵循MrTux提供的答案)这个C:\GitCerts文件夹。

  • 从命令行中运行以下命令:git config --global http.sslCAinfo "C:\GitCerts\MyCert.cer"
  • 在记事本中打开文件MyCert.cer,让它打开
  • 打开记事本的另一个Git代码ca-bundle.crt文件。我的是在位置C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
  • 验证在MyCert.cer文件中的证书文本是在ca-bundle.crt文件(应该是),如果不只是复制并粘贴MyCert.cer所有文本,并在CA-bundle.crt文件的底部添加它(请确保您将其他所有证书信息在那里)。

----- BEGIN CERTIFICATE -----

您的证书信息在这里

----- END CERTIFICATE -----

  • 如果你不得不修改CA-bundle.crt文件然后将其保存(您可能必须将它保存到桌面上,然后复制并粘贴回覆盖ca-bundle.crt文件)
  • 最后,根据您的ca-bundle.crt文件运行以下命令的路径:git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"

0
投票

对于那些在公司债券,谁得到的自签名证书错误 - 下面是一个另类。

在公司债券,同样的git的服务器,即通过HTTPS协议访问,通常也将通过SSH协议访问。因此,选择服务器URL的SSH选项,并克隆库作为

git clone user@server/project.git

当然,从你的id_rsa.pub文件夹中的公钥(~\.ssh)将不得不加入到服务器。这样,您就不必HTTPS服务器证书添加到您的Windows证书存储区或Mac的钥匙串(example)。


0
投票

我经历过使用GitHub的这个错误,它似乎从哪儿冒出来。我以前做过很多工作在GitHub上。

卡巴斯基反病毒是罪魁祸首!

当我关掉我的防病毒保护(并等待一两分钟),我是能够从我的github回购推/拉。

我最终的解决办法是从卡巴斯基找到证书,然后将其添加到Git的为Windows信任存储。后工序的详细说明已经在接受的答案,但在类似的位置,任何人我能够去找到卡巴斯基证书:

设置>其他>网络>加密连接扫描 - 高级设置>安装证书>显示证书>详情>复制到文件> Base64编码X.509(.CER)


-1
投票

我发现这个问题一个答案更多:

$ git config http.sslVerify false
© www.soinside.com 2019 - 2024. All rights reserved.