Então na escola precisamos instalar um certificado para acessar sites https. No Firefox, posso importar o certificado. No entanto, não posso fazer isso com a linha de comando. Por exemplo, executando git push
eu recebo:
fatal: unable to access 'https://github.com/user/repo': server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Como importo um certificado para remover isso? A importação deve ser capaz de autenticar para mim. Além disso, é um .cer
arquivo, portanto a resposta .crt
não funcionará. Além disso, não quero etapas sobre como configurar o git, como já fiz. Quero saber se é possível fazer isso. Ou posso simplesmente desabilitar git
totalmente a autenticação com o comando e fazer com que ele ignore certificados como o quea respostaaqui diz? Além disso, não quero que a página da Web carregue, configurei o Firefox para fazer isso. Quero que o git push
comando forneça a saída padrão como:
[master 630d087] message
1 file changed, 93 insertions(+), 80 deletions(-)
rewrite somefile (84%)
Counting objects: 9, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 978 bytes | 0 bytes/s, done.
Total 5 (delta 2), reused 0 (delta 0)
To https://github.com/User/Repo.git
851ae39..630d087 master -> master
Nota: descobri que é git config --global http.sslverify false
. Mas eu gostaria de ver uma resposta para tudo, não apenas um git hack
Responder1
DR
Para que tudo funcione e não apenas o seu navegador, você precisa adicionar esse certificado CA ao repositório CA confiável do sistema.
No Ubuntu:
- Vá para /usr/local/share/ca-certificates/
- Crie uma nova pasta, ou seja, "sudo mkdir school"
- Copie o arquivo .crt para a pasta da escola
- Certifique-se de que as permissões estejam corretas (755 para a pasta, 644 para o arquivo)
- Execute "sudo update-ca-certificates"
Por que
Deixe-me explicar o que está acontecendo também, para que os outros postadores vejam por que não precisam de nenhum certificado para usar o Github sobre HTTPS.
O que está acontecendo é que sua escola está interceptando todas as comunicações SSL, provavelmente para monitorá-las.
Para fazer isso, o que eles fazem é essencialmente um ataque "man in the middle" e, por causa disso, seu navegador reclama, com razão, que não está conseguindo verificar o certificado do github. O proxy da sua escola está obtendo o certificado do github e, em vez disso, fornecendo seu próprio certificado.
Quando seu navegador tenta verificar o certificado fornecido pela escola em relação à CA que assinou o certificado do github, ele falha por direito.
Então, para que a conexão SSL funcione na escola, você precisa aceitar conscientemente aquele ataque “MITM”. E você faz isso adicionando o certificado CA da escola como confiável.
Quando você confia nessa CA escolar, a verificação do certificado falso do github funcionará, pois o certificado falso do github será verificado pela CA escolar.
Esteja ciente de que a conexão SSL não é mais segura, pois o administrador da sua escola poderá interceptar todas as suas conexões criptografadas.
Responder2
O ca-certificates
pacote contém as instruções em README.Debian
:
Se você deseja instalar autoridades de certificação locais para serem implicitamente confiáveis, coloque os arquivos de certificado como arquivos únicos que terminam em
.crt
into/usr/local/share/ca-certificates/
e execute novamenteupdate-ca-certificates
.
Observe que ele menciona um diretório diferente das outras respostas aqui:
/usr/local/share/ca-certificates/
Depois de copiar, /usr/local/share/ca-certificates/
você pode atualizar as permissões do certificado e executar sudo update-ca-certificates
conforme mencionado na resposta dos Telegraphers. Você verá na saída que o certificado foi adicionado.
Responder3
As extensões .crt, .pem e .cer são intercambiáveis, basta alterar a extensão do nome do arquivo, elas têm o mesmo formato. Experimente isto:
$ sudo cp mycert.cer /usr/share/ca-certificates/mycert.pem
$ sudo dpkg-reconfigure ca-certificates
$ sudo update-ca-certificates
$ git config --global http.sslCAInfo /usr/share/ca-certificates/mycert.pem
Responder4
Eu uso a seguinte compilação de respostas anteriores:
sudo -i
echo | openssl s_client -showcerts -servername site.example.com -connect example.com:443 2>/dev/null | awk '/-----BEGIN CERTIFICATE-----/, /-----END CERTIFICATE-----/' >> /usr/local/share/ca-certificates/ca-certificates.crt
update-ca-certificates
Freqüentemente, ambos site.example.com
e example.com
são os mesmos nomes de host.