adicionando certificado SSL somente para o Github (nem todos os certificados do pacote ca-certificates)

11

Eu 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 acontece porque não tenho certificados em /etc/ssl/certs/ . Eu sei como consertar esse problema. Eu posso instalar o pacote ca-certificates do repositório Debian. O problema é, no entanto, que isso irá instalar todos os certificados (milhares) que eu necessariamente não quero aceitar / confiar.

Como posso instalar o certificado apenas para o Github?

um subproblema / subquestão

Em outra máquina, onde o pacote ca-certificates já está instalado e o git funciona, notei que alguns certificados em /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 do 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 descobrir qual desses 159 certificados é o que eu preciso? (além da força bruta - cortando o arquivo em metades e verificando as duas metades, repetindo while n > 1 ).

    
por Martin Vegter 18.01.2014 / 12:28

2 respostas

12

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, por exemplo:

git init [email protected]:yourname/yourrepo.git

Veja também: Github: gerando chaves ssh , WikiHow

[Editar # 1]

sem verificações de certificado:

GIT_SSL_NO_VERIFY=true git clone https://github.com/p/repo.git

ou autenticado

GIT_SSL_NO_VERIFY=true git clone https://user@pass:github.com/p/repo.git

Para mim, ainda não está claro o que você está pedindo, porque você sabe que a instalação de certificados ca resolverá o problema.

[Editar # 2]

Ok, a outra pergunta foi

how to have only the certificate which is needed to access github.com via https

  1. Abra o navegador e vá até o link . Clique no nome verde à esquerda em https:// e clique em %código%. Na guia Certificates , você verá a cadeia de certificados, que é:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Exportar cada um dos certificados DigiCert para um arquivo.

  3. copie os arquivos para Details
  4. execute /etc/ssl/certs/ , o que cat todos os certificados para c_rehash
  5. você terminou.

Como eu disse, não sou amigo de tais ações porque o github pode alterar as CAs a qualquer momento, então sempre resultará em trabalho adicional.

    
por 25.01.2014 / 01:32
1

Como foi sugerido anteriormente, você poderia usar as chaves SSH, em vez de confiar em HTTPS para evitar esse problema e, possivelmente, aproveitar melhor a segurança.

Dito isto, acho que o que você está procurando é como instalar certificados raiz / CA em / etc / ssl / certs. Em suma, não é suficiente apenas despejar o arquivo codificado em PEM em / etc / ssl / certs - você também deve 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 sufixo de 0,0, ou se houver uma colisão de hash, 0,1 e assim por diante.

Aqui está um write-up detalhado, bem como um script de exemplo que você pode usar para automatizar o processo: link

Espero que seja isso o que você estava procurando, mas como eu disse anteriormente, as chaves SSH são provavelmente a solução "melhor". :)

    
por 26.05.2014 / 07:42