aggiunta di certificato SSL solo per Github (non tutti i certificati dal pacchetto ca-certificati)


13

Ottengo il seguente errore quando accedo a Github su HTTPS:

error: server certificate verification failed. 
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

Questo perché non ho alcun certificato /etc/ssl/certs/. So come risolvere questo problema. Posso installare il pacchetto ca-certificatesdal repository Debian. Il problema è, tuttavia, che questo installerà tutti i certificati (migliaia) che non voglio necessariamente accettare / fidarmi.

Come posso installare il certificato solo per Github?

un sottoproblema / domanda secondaria

Su un altro computer, dove il pacchetto ca-certificatesè già installato e git funziona, ho notato che alcuni certificati /etc/ssl/certs/sono un certificato per file e altri sono molti certificati in un file. Il particolare file contenente il certificato Github, /etc/ssl/certs/ca-certificates.crtcontiene oltre 150 altri certificati:

$ grep 'BEGIN CERTIFICATE' /etc/ssl/certs/ca-certificates.crt | wc -l
159

Come posso trovare quale di questi 159 certificati è quello di cui ho bisogno? (diverso dalla forza bruta - suddivisione a metà del file e controllo di entrambe le metà, ripetizione while n > 1).


Cosa stai cercando di realizzare? Contattare GitHub a livello di codice?
Nate W.

Hai provato a scaricare il pacchetto sorgente e quindi a estrarre solo il certificato che desideri?
Jayhendren,

Cosa stai usando per accedere a Github? qualche strumento da riga di comando? un browser?
lk-

Risposte:


13

Per accedere a Github devi farlo tramite ssh. Quindi devi aggiungere la tua chiave pubblica ssh a github. Dopodiché puoi accedere a github tramite ssh, ovvero:

git init git@github.com:yourname/yourrepo.git

Vedi anche: Github: generare chiavi ssh , WikiHow

[Modifica n. 1]

senza controlli certificati:

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

o autenticato

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

Per me non è ancora chiaro cosa stai chiedendo, perché sai che l'installazione dei certificati ca risolverà il problema.

[Modifica n. 2]

Ok, l'altra domanda era

come avere solo il certificato necessario per accedere a github.com tramite https

  1. Apri il browser e vai su https://github.com/ . Fai clic sul nome verde a sinistra da https://e fai clic su Certificates. Nella Detailsscheda, vedrai la catena di certificati, che è:

    DigiCert ...
      DigiCert ...
       github.com ...
    
  2. Esporta ciascuno dei certificati DigiCert in un file.

  3. copia i file in /etc/ssl/certs/
  4. eseguire a c_rehashquale cat tutti i certificatica-certificates.crt
  5. hai fatto.

Come ho detto, non sono amico di tali azioni perché Github può modificare le CA in qualsiasi momento, quindi si tradurrà sempre in ulteriore lavoro.


1
Grazie per il suggerimento Ma vorrei accedere githubtramite https.
Martin Vegter,

1

Come suggerito in precedenza, è possibile utilizzare le chiavi SSH, invece di fare affidamento su HTTPS per evitare questo problema e, probabilmente, godere di una migliore sicurezza.

Detto questo, penso che quello che stai cercando sia come installare i certificati root / CA in / etc / ssl / certs. In poche parole, non è sufficiente scaricare il file con codifica PEM in / etc / ssl / certs - devi anche calcolare l'hash di detto certificato e creare un link simbolico in / etc / ssl / certs per quel certificato file. Il nome del collegamento simbolico deve essere l'hash con il suffisso di 0, o se c'è una collisione di hash, .1 e così via.

Ecco un articolo dettagliato, oltre a uno script di esempio che puoi utilizzare per automatizzare il processo: http://wiki.openwrt.org/doc/howto/wget-ssl-certs#adding.root.certificates

Spero che questo sia quello che stavi cercando, ma come ho detto prima, le chiavi SSH sono probabilmente la soluzione "migliore". :)


c_rehashsta facendo quello che hai spiegato. Vedi la c_rehashpagina man. A proposito: non è necessario calcolare gli hash. Catturare i certificati su ca-certificati.crt è sufficiente, poiché gitlegge solo questo file. Inoltre il link ha spiegato come ottenere manualmente i certificati con openssl. Questo è molto dubbio e provoca un uomo nel mezzo dell'attacco. Non lo consiglierei.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.