O administrador do sistema para um projeto em que eu participei decidiu que o SSH é "demais"; em vez disso, ele configurou o Git para ser acessível por meio de uma https://
URL (e autenticação de nome de usuário / senha). O servidor para este URL apresenta um certificado autoassinado, portanto ele recomendou a todos que desativassem a validação de certificado. Isso não me parece uma boa configuração, em termos de segurança.
É possível dizer ao Git que, para o X remoto (ou melhor, qualquer remoto em qualquer repositório que tenha início https://$SERVERNAME/
), é necessário aceitar um certificado específico, e somente esse certificado? Reduplique basicamente o comportamento da chave do servidor do SSH.
git
ssl-certificate
zwol
fonte
fonte
Respostas:
Resumidamente:
~/git-certs/cert.pem
arquivo (por exemplo )git
para confiar neste certificado usando ohttp.sslCAInfo
parâmetroEm mais detalhes:
Obter certificado autoassinado do servidor remoto
Supondo que a URL do servidor seja
repos.sample.com
e você deseja acessá-la pela porta443
.Existem várias opções, como obtê-lo.
Obter certificado usando o openssl
Capture a saída em um arquivo
cert.pem
e exclua tudo, exceto parte entre (e incluindo)-BEGIN CERTIFICATE-
e-END CERTIFICATE-
O conteúdo do arquivo resultante ~ / git-certs / cert.pem pode ter a seguinte aparência:
Obter certificado usando seu navegador da web
Eu uso o Redmine com repositórios Git e acesso a mesma URL para interface do usuário da web e para acesso à linha de comando git. Dessa forma, tive que adicionar uma exceção para esse domínio no meu navegador da web.
No Firefox,
Options -> Advanced -> Certificates -> View Certificates -> Servers
encontrei o host autoassinado, o selecionei e, usando oExport
botão, obtive exatamente o mesmo arquivo, criado com o usoopenssl
.Nota: Fiquei um pouco surpreso, não há nome da autoridade visivelmente mencionada. Isto é bom.
Ter o certificado confiável em arquivo dedicado
As etapas anteriores devem resultar em um certificado em algum arquivo. Não importa, qual arquivo é, desde que seja visível para o seu git ao acessar esse domínio. eu usei
~/git-certs/cert.pem
Nota: Se você precisar de certificados autoassinados mais confiáveis, coloque-os no mesmo arquivo:
Isso deve funcionar (mas eu testei apenas com um único certificado).
Configure o git para confiar neste certificado
Você também pode tentar fazer esse sistema amplamente, usando em
--system
vez de--global
.E teste: agora você poderá se comunicar com seu servidor sem recorrer a:
Se você já configurou seu git para o desconhecimento de certificados SSL, desative-o:
e você também pode verificar se fez tudo corretamente, sem erros de ortografia:
o que deve listar todas as variáveis, você definiu globalmente. (Eu escrevi incorretamente o http para ott).
fonte
Ajustes do usuário OSX.
Seguir as etapas da resposta Aceita funcionou para mim com uma pequena adição ao configurar no OSX.
Coloquei o
cert.pem
arquivo em um diretório no meu usuário logado no OSX e, assim, fiz com que eu ajustasse o local do certificado confiável.Configure o git para confiar neste certificado:
fonte