git https 克隆必须失败

问题描述 投票:0回答:1

如果 git 最终用户设置

http.sslVerify=false

,例如命令

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

然后公共存储库克隆无需任何验证即可成功,并且关闭 TLS 验证不会提供任何保护。

在此设置中,git 用户将从外部云访问 git 镜像(bitbucket 镜像)服务器,我们希望确保每个 git 客户端在执行 git 克隆/拉取操作之前都提供有效的证书。(目的是对公共存储库进行审计跟踪也关闭)。

如果 git 客户端用户通过设置 http.sslVerify=false 禁用 TLS 验证,我如何阻止 git 客户端用户? (以确保 git cli 客户端提供有效的证书)

仅供参考,Bitbucket 镜像托管在 Apache 代理后面,我可以在其中启用 mTLS,但在这里寻求建议/建议。如何确保 git 客户端每次都为所有 git 操作提供有效的 ssl 证书:) 以便我们可以在 Apache 日志或应用程序日志中记录 SSL 证书用户?

提前致谢。

回答我自己的查询,因为我发现了两种解决方案(服务器端更改)来阻止匿名访问。

方法 1:在 Apache 代理上启用 mTLS 以强制客户端使用有效的证书。设置 Apache 指令“SSLVerifyClient require”,我们将在 Apache 日志中打印证书用户详细信息(用于打印 ssl 标头值的自定义日志或使用 apache 取证日志)

方法 2:在 Bitbucket 属性文件中启用 feature.public.access=false,这将强制最终用户发送 HTTPS 令牌。在这种情况下,ssl 客户端证书不是强制性的,但在 ssl 客户端环境中至少需要 CA 根证书。

git github ssl certificate bitbucket
1个回答
2
投票

http.sslVerify
是关于客户端验证服务器证书,即客户端正确验证服务器以防止中间人攻击。这与 “确保每个 git 客户端都提供有效的证书” 无关 - 这将使用客户端证书,以便服务器可以对客户端进行身份验证(相互 TLS)。

服务器无法确保客户端正确验证服务器证书。只能在服务器中确定自 TLS 握手成功以来客户端必须以某种方式接受服务器证书。无法观察客户端到底为何接受服务器证书,即是否进行了正确的验证。甚至无法观察到连接来自预期的客户端,而不是来自某个中间人攻击者。

确定客户端没有检查服务器证书的唯一方法是通过提供错误的证书来使客户端失败。当然,在这种情况下,

git clone
不会成功,因为要么客户端由于错误的证书而无法继续,要么服务器由于客户端未正确检查证书而无法继续。因此,这种检查不能用于使
git clone
只能通过正确的证书验证来实现。

© www.soinside.com 2019 - 2024. All rights reserved.