Recebo o seguinte erro ao acessar o Github por HTTPS:
error: server certificate verification failed.
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
Isso ocorre porque eu não tenho nenhum certificado /etc/ssl/certs/
. Eu sei como resolver esse problema. Eu posso instalar o pacote ca-certificates
no repositório Debian. O problema é, no entanto, que isso instalará todos os certificados (milhares) nos quais eu não necessariamente quero aceitar / confiar.
Como posso instalar o certificado apenas para o Github?
a Subproblema / Subquestion
Em outra máquina, onde o pacote ca-certificates
já está instalado e o git funciona, notei que alguns certificados /etc/ssl/certs/
são um certificado por arquivo e outros são muitos certificados em um arquivo. O arquivo específico que contém o certificado Github /etc/ssl/certs/ca-certificates.crt
contém mais de 150 outros certificados:
$ grep 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt | wc -l
159
Como posso encontrar qual desses 159 certificados é o que eu preciso? (exceto força bruta - corte o arquivo pela metade e verifique as duas metades, repetindo while n > 1
).
fonte
Respostas:
Para acessar seu Github, você precisa fazê-lo via ssh. Então você precisa adicionar sua chave pública ssh ao github. Depois disso, você poderá acessar o github via ssh, ou seja:
Veja também: Github: gerando chaves ssh , WikiHow
[Editar # 1]
sem verificações de certificado:
ou autenticado
Para mim, ainda não está claro o que você está pedindo, porque você sabe que a instalação de certificados CA corrigirá o problema.
[Editar # 2]
Ok, a outra pergunta foi
Abra seu navegador e navegue para https://github.com/ . Clique no nome verde à esquerda
https://
e clique emCertificates
. NaDetails
guia, você verá a cadeia de certificados, que é:Exporte cada um dos certicates DigiCert para um arquivo.
/etc/ssl/certs/
c_rehash
qual gato todos os certificados paraca-certificates.crt
Como eu disse, não sou amigo de tais ações porque o github pode alterar os CAs a qualquer momento, portanto sempre resultará em trabalho adicional.
fonte
github
viahttps
.Como foi sugerido anteriormente, você pode usar chaves SSH, em vez de confiar no HTTPS para evitar esse problema e, sem dúvida, aproveitar melhor a segurança.
Dito isto, acho que o que você está procurando é como instalar certificados raiz / CA em / etc / ssl / certs. Em poucas palavras, não basta despejar o arquivo codificado em PEM em / etc / ssl / certs - você também precisa calcular o hash do referido certificado e criar um link simbólico em / etc / ssl / certs para esse certificado Arquivo. O nome do link simbólico deve ser o hash com o sufixo .0 ou, se houver uma colisão de hash, .1 e assim por diante.
Aqui está uma descrição detalhada, bem como um exemplo de script que você pode usar para automatizar o processo: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates
Espero que seja isso que você estava procurando, mas como eu disse anteriormente, as chaves SSH são provavelmente a solução "melhor". :)
fonte
c_rehash
está fazendo o que você explicou. Veja ac_rehash
página de manual. BTW: não há necessidade de calcular os hashes. A transmissão de certificados para ca-certificates.crt é suficiente, poisgit
lê apenas esse arquivo. Além disso, o link explicou como obter manualmente os certificados com o openssl. Isso é muito duvidoso e provoca um homem no meio do ataque. Eu não recomendaria.