我在 GitHub 上托管了一个 git repo,在自己的公共云上自托管了一个无礼物的.lfsconfig
Git LFS 服务器。我使用将提交钩子指向我的 lfs 实例而不是 GitHub 的实例。这本身就可以正常工作。
但是,我的云服务使用 Cloudflare 生成的证书和私钥通过 mTLS 进行保护,然后我使用 OpenSSL 将其打包到受密码保护的 PKCS#12 密钥库中进行分发。这适用于通过浏览器访问我的基于 Web 的服务,我可以.pfx
轻松导入任何文件,但我不确定如何将此密钥库与 git 一起使用以允许访问 LFS 服务器(由同一证书保护)。
根据此答案,我尝试使用 OpenSSL 对文件进行多次转换.p12
,并对Git 网络配置进行不同的排列,但我在确定密钥库的每个部分需要在选项中设置的位置时遇到了一些困难http
。每次尝试从我的存储库推送到 LFS 时,我都会得到以下输出:
(test-ca.crt和test-cl.crt预先从.p12文件中派生而来)
$ git -c http.sslcainfo=test-ca.crt -c http.sslCert=test-cl.crt \
-c http.sslCertPasswordProtected lfs push origin main
Password for 'cert:///test-cl.crt':
warning: Authentication error: Authentication required:
Authorization error: https://git-lfs.my-cloud.com/user/repo/locks/verify
Check that you have proper access to the repository
这导致 LFS 跟踪的文件不会被推送到对象存储。
我的云上有值得信赖的客户,他们也需要访问此 LFS 服务器,他们使用不同的操作系统,包括 Ubuntu 和 Windows。我不确定git-bash
Windows 是否会使用 LFS 的全局操作系统用户证书存储,而且我似乎也不知道如何在 Ubuntu 上安装全系统的客户端证书。