Como instalar certificados para linha de comando

Como instalar certificados para linha de comando

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 pusheu 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 .cerarquivo, portanto a resposta .crtnã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 gittotalmente 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 pushcomando 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-certificatespacote 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 .crtinto /usr/local/share/ca-certificates/e execute novamente update-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-certificatesconforme 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.come example.comsão os mesmos nomes de host.

informação relacionada