我有一个使用自签名证书通过https工作的公司git服务器。本地克隆包含两个遥控器 - 指向该服务器的原点,另一个指向github。 默认情况下,从原点拉出会失败:
$ git pull
fatal: unable to access 'https://user@code.example.com/git/fizzbuzz.git/': SSL certificate problem: self signed certificate
github遥控器工作正常。
有两种经常提出的解决方案:
git config http.sslVerify false
这是一个坏主意,而configure Git to accept a particular self-signed server certificate for a particular https remote建议的那个:
git config http.sslCAInfo <downloaded certificate>.pem
修复了从原点拉动,但是打破了github remote:
$ git pull github
fatal: unable to access 'https://github.com/user/fizzbuzz.git/': SSL certificate problem: unable to get local issuer certificate
如何在不破坏github的情况下从公司服务器上工作?
答案 0 :(得分:46)
如果您使用的是git 1.8.5 +(2013年8月),则可以specify http directives per url(!)。
在你的情况下:
git config http."https://code.example.com/".sslVerify false
这将取消ssl验证,仅针对code.example.com
网址,而不取代其他网址。
或者:
git config http."https://code.example.com/".sslCAInfo <downloaded certificate>.pem
同样的想法:sslCAInfo
仅针对<downloaded certificate>.pem
网址指向code.example.com
。
可以在git系统证书存储区中添加您的证书,C:\path\to\PortableGit-2.6.1-64-bit\usr\ssl\certs\ca-bundle.crt
位于{{1}}。
但这不是最好的做法,除非您必须分发带有内部证书的git发行版。
答案 1 :(得分:3)
自Git for Windows v2.5.0(git-for-windows.github.io)起,已安装的证书文件已移至“C:\ Program Files(x86)\ Git \ mingw32 \ ssl \ certs \ ca” -bundle.crt”。您必须将证书添加到此文件中。