我在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的用于Windows的正常情况下位于文件中的受信任的证书自己的信任存储
[Git installdir]\bin\curl-ca-bundle.crt
(例如,C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt
;可以通过在http.sslCAinfo
密钥[Git installdir]\etc\gitconfig
配置)。[Git installdir]\mingwXX\ssl\certs\ca-bundle.crt
其中XX
代表32
或64
(例如,C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
;可以通过在http.sslCAinfo
密钥C:\ProgramData\Git\config
配置)。禁用证书检查(例如,通过设置git config http.sslVerify false
)是不是一个好主意,可能是非常危险的(因为所有的安全检查被禁用,MitM attacks是容易实现 - 这取决于在那里,这是设置适用于所有新的HTTPS连接)。
为了添加证书(可以说,它是一个自签名的一个或另一个根证书),以便自动信任它这个信任存储,你必须执行以下步骤:
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的信任存储区。
TortoiseGit可能是没有使用相同的信任浏览器。我觉得Chrome使用的系统存储,Firefox使用它自己的。我不知道TortoiseGit使用。
在客户端,如果你设置git config http.sslVerify false
你可能有更多的运气。您也可以set this globally。
这里是我工作。创建一个文件夹C:\GitCerts
。然后下载Base64 .cer
文件(遵循MrTux提供的答案)这个C:\GitCerts
文件夹。
git config --global http.sslCAinfo "C:\GitCerts\MyCert.cer"
MyCert.cer
,让它打开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
文件运行以下命令的路径:git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"
对于那些在公司债券,谁得到的自签名证书错误 - 下面是一个另类。
在公司债券,同样的git的服务器,即通过HTTPS协议访问,通常也将通过SSH协议访问。因此,选择服务器URL的SSH选项,并克隆库作为
git clone user@server/project.git
当然,从你的id_rsa.pub
文件夹中的公钥(~\.ssh
)将不得不加入到服务器。这样,您就不必HTTPS服务器证书添加到您的Windows证书存储区或Mac的钥匙串(example)。
我经历过使用GitHub的这个错误,它似乎从哪儿冒出来。我以前做过很多工作在GitHub上。
卡巴斯基反病毒是罪魁祸首!
当我关掉我的防病毒保护(并等待一两分钟),我是能够从我的github回购推/拉。
我最终的解决办法是从卡巴斯基找到证书,然后将其添加到Git的为Windows信任存储。后工序的详细说明已经在接受的答案,但在类似的位置,任何人我能够去找到卡巴斯基证书:
设置>其他>网络>加密连接扫描 - 高级设置>安装证书>显示证书>详情>复制到文件> Base64编码X.509(.CER)
我发现这个问题一个答案更多:
$ git config http.sslVerify false