Tenho um repositório git hospedado no GitHub e um servidor Git LFS giftless auto-hospedado na minha própria nuvem pública. Eu uso um .lfsconfig
para apontar os hooks de commit para minha instância lfs em vez da do GitHub. Isso funciona corretamente por si só.
No entanto, meus serviços de nuvem são protegidos por mTLS usando um certificado e uma chave privada gerados pelo Cloudflare, que eu então uso OpenSSL para empacotar em um keystore protegido por senha PKCS#12 para distribuição. Isso funciona para acessar meus serviços baseados na web por meio de navegadores, onde posso importar qualquer .pfx
arquivo facilmente, mas não tenho certeza de como usar esse keystore com o git para permitir acesso ao servidor LFS (que é protegido pelo mesmo certificado).
Trabalhando com esta resposta , tentei uma série de transformações no .p12
arquivo usando OpenSSL e diferentes permutações da configuração de rede do Git , mas estou tendo alguma dificuldade em descobrir onde cada parte do keystore precisa ser definida nas http
opções. Toda vez, recebo a seguinte saída ao tentar enviar para o LFS do meu repositório:
(test-ca.crt e test-cl.crt são derivados do arquivo .p12 anteriormente)
$ 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
Isso faz com que os arquivos rastreados pelo LFS não sejam enviados para o armazenamento de objetos.
Tenho clientes confiáveis na minha nuvem que também precisam de acesso a este servidor LFS, que usam diferentes sistemas operacionais, incluindo Ubuntu e Windows. Não tenho certeza se git-bash
o Windows usaria o repositório global de certificados de usuário do SO para LFS, e não consigo descobrir como instalar um certificado de cliente em todo o sistema no Ubuntu também.