我必须使用没有适当证书的git服务器,但我不想这样做
env GIT_SSL_NO_VERIFY=true git command
每一次我执行git操作。但我也想让其他git仓库启用SSL。有没有办法使这个本地化到单个仓库中?
我必须使用没有适当证书的git服务器,但我不想这样做
env GIT_SSL_NO_VERIFY=true git command
每一次我执行git操作。但我也想让其他git仓库启用SSL。有没有办法使这个本地化到单个仓库中?
Answers:
你可以做
git config http.sslVerify false
在您的特定存储库中禁用该存储库的SSL证书检查。
--global
当尚未签出某个存储库时,似乎需要该选项(无法为本地尚不存在的存储库设置选项)。之后,您始终可以将其重新打开。
你可以做如下
对于单个回购
git config http.sslVerify false
对于所有回购
git config --global http.sslVerify false
sudo
仅在您真正需要root才能做某事时才使用。就像安装新软件,修改重要的系统文件,重新格式化驱动器,重新配置网络,管理服务……这个人的问题并不意味着他需要root才能做任何事情。如果您是管理员,则应该在大多数时间运行大多数命令(包括那些会更改配置的命令),而无需使用sudo。
就像Thirumalai所说的一样,但是在克隆的存储库中并且没有--global
。即
GIT_SSL_NO_VERIFY=true git clone https://url
cd <directory-of-the-clone>
git config http.sslVerify false
could not lock global config file .gitconfig: Permission denied
/var/www/...
如果您在Windows计算机上并安装了Git,则可以尝试以下步骤:
在[http]部分下,添加以下行:sslVerify = false
[http]
sslVerify = false
有一种简单的方法可以将GIT配置为以正确的方式处理服务器。只需为您的git服务器添加特定的http部分,然后指定要信任的证书(Base64编码):
〜/ .gitconfig
[http "https://repo.your-server.com"]
# windows path use double back slashes
# sslCaInfo = C:\\Users\\<user>\\repo.your-server.com.cer
# unix path to certificate (Base64 encoded)
sslCaInfo = /home/<user>/repo.your-server.com.cer
这样,您将不再有SSL错误并验证(通常是)自签名证书。这是最好的方法,因为它可以保护您免受中间人攻击。仅禁用ssl验证时,您很容易受到此类攻击。
如果必须为托管多个存储库的一台git服务器禁用SSL检查,则可以运行:
git config --bool --get-urlmatch http.sslverify https://my.bad.server false
(如果您仍然使用git <v1.8.5,请运行git config --global http.https://my.bad.server.sslVerify false
)
该文档位于命令末尾的说明中,其
.gitconfig
内容如下所示:
[http "https://my.bad.server"]
sslVerify = false
无论存储库是什么,它将忽略对此服务器的所有证书检查。
您在代码中也有一些解释
这个问题不断出现,我还没有找到满意的结果,所以这对我有用(基于先前的答案https://stackoverflow.com/a/52706362/1806760,该按钮不起作用):
我的服务器https://gitlab.dev
带有自签名证书。
第一次运行git config --system --edit
(在提升权限的命令提示符下,如果只想为用户使用,请更改--system
为--global
),然后在前面的任何[http]
部分之后插入以下代码段:
[http "https://gitlab.dev"]
sslVerify = false
然后检查您是否正确完成了所有操作:
> git config --type=bool --get-urlmatch http.sslVerify https://gitlab.dev
false