如果最终用户使用了http.sslVerify=false,则git https clone必须失败

kmbjn2e3  于 2023-08-01  发布在  Git
关注(0)|答案(1)|浏览(232)

如果git终端用户设置
http.sslVerify=false
,例如命令

git -c http.sslVerify=false clone https://<url>/x.git

字符串
则公共存储库克隆成功而无需任何验证,并且关闭TLS验证不提供任何保护。
在这个设置中,git用户将从外部云访问git镜像(bitbucket mirror)服务器,我们希望确保每个git客户端在执行git克隆/拉取操作之前都提供有效的证书。(目的是关闭公共存储库的审计跟踪)。
如果用户通过设置http.sslVerify=false禁用TLS验证,我如何阻止git客户端用户?(以确保git cli客户端提供有效的cert)
FYI,Bitbucket镜像托管在Apache代理之后,我可以在那里启用mTLS,但在这里寻求建议/建议。如何确保git client每次都为所有git操作提供有效的ssl cert:),以便我们可以在Apache日志或Application日志中记录SSL cert用户?
先谢谢你。
回答我自己的查询,因为我发现两个解决方案(服务器端的变化),以阻止匿名访问。
方法1:在Apache代理上启用mTLS以强制客户端使用有效的证书。设置Apache指令“SSLVerifyClient require”,我们将在Apache日志中打印cert用户详细信息(自定义日志打印ssl头值或使用Apache取证日志)
方法2:在Bitbucket属性文件中启用feature.public.access=false,强制终端用户发送HTTPS令牌。在这种情况下,SSL客户端证书不是强制性的,但是在SSL客户端环境中至少需要CA根证书。

w1jd8yoj

w1jd8yoj1#

http.sslVerify是关于客户端验证服务器证书的,即客户端正确地认证服务器以防止中间人攻击。这与 “确保每个git客户端都有一个有效的证书” 无关-这将是使用客户端证书,以便服务器可以验证客户端(双向TLS)。
服务器无法确保客户端正确验证服务器证书。只能在服务器中确定客户端必须以某种方式接受服务器证书,因为TLS握手成功。无法观察到客户端接受服务器证书的确切原因,即是否进行了适当的验证。甚至无法观察到连接来自预期的客户端,而不是来自中间人攻击者。
确定客户机没有检查服务器证书的唯一方法是通过提供错误的证书使客户机失败。当然,在这种情况下,git clone不会成功,因为客户端将由于错误的证书而无法继续,或者服务器将由于客户端未正确检查证书而无法继续。因此,这种检查不能用于使git clone只能通过适当的证书验证才能实现。

相关问题