我在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,但是我可以看到URL栏中的挂锁是绿色的。当我单击挂锁时,我看到身份已验证。我不了解我的浏览器如何将此证书视为有效证书,但是当我尝试通过Git将数据推送到该证书时,它失败了。
Git for 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
git config中的键配置,例如C:\ProgramData\Git\config
,C:\Program Files\Git\etc
或你的全局/本地配置)。禁用证书检查(例如,通过设置git config http.sslVerify false
)不是一个好主意,并且可能非常危险(因为禁用了所有安全检查并且很容易发生MitM攻击-取决于此设置的位置,它适用于所有新的https连接)。
为了将证书(可以是自签名的一个或另一个根证书)添加到此信任存储中以便自动信任它,你必须执行以下步骤(前五个步骤只是收集证书,你也可以使用自己喜欢的浏览器来完成此操作,但可能需要执行不同的任务):
现在你有几种选择
git config --global http.sslCAinfo "[yourfilename]"
在cli shell中执行,使用仅包含你刚下载的证书的单独的证书信任库,以便仅将此证书用作信任库。git config --global http.sslCAinfo "[yourfilename]"
在cli shell中执行以使用此新信任关系店铺。[path-to-git-trust-store-crt-file]
(例如,type [yourfilename] >> [path-to-git-trust-store-crt-file]
以具有管理权限的cli shell中)或使用记事本(在桌面上制作ca-bundle.crt文件的副本,然后将内容附加到下载的.crt文件,然后将其复制回)。缺点:更改可能会在git update上被覆盖完毕。现在,该证书位于Git for Windows的信任存储中。
Open the URL of the site in Internet Explorer
您要在其中使用哪个URL?您在Git中用于遥控器的URL。
我还必须修改
C:\Program Files\Git\mingw64\ssl\cert.pem
我刚刚在其中添加的base64证书的文件,并且(最终)它可以工作。它为我工作。我选择
6.1
步骤