git - unable - server certificate verification failed cafile etc ssl certs ca certificates crt crlfile none




Certificato SSL rifiutato cercando di accedere a GitHub su HTTPS dietro il firewall (19)

Sono bloccato dietro un firewall, quindi devo usare HTTPS per accedere al mio repository GitHub. Sto usando cygwin 1.7.7 su Windows XP.

Ho provato a impostare il telecomando su https://[email protected]/username/ExcelANT.git , ma premendo prompt per una password, ma non faccio nulla una volta che l'ho inserito. https://username:<password>github.com/username/ExcelANT.git e clonazione del repository vuoto da zero ma ogni volta mi dà lo stesso errore

errore: problema del certificato SSL, verificare che il certificato CA sia OK. Dettagli:
errore: 14090086: routine SSL: SSL3_GET_SERVER_CERTIFICATE: verifica del certificato fallita durante l'accesso a https://github.com/username/ExcelANT.git/info/refs

L' GIT_CURL_VERBOSE=1 mi dà

* Informazioni su connect () su github.com port 443 (# 0)
* Provando 207.97.227.239 ... * imposta correttamente le posizioni di verifica dei certificati:
* CAfile: nessuno
CApath: / usr / ssl / certs
* Problema certificato SSL, verificare che il certificato CA sia OK. Dettagli:
errore: 14090086: routine SSL: SSL3_GET_SERVER_CERTIFICATE: verifica certificato non riuscita
* Scadenza cancellata
* Chiusura della connessione n. 0
* Informazioni su connect () su github.com port 443 (# 0)
* Provando 207.97.227.239 ... * imposta correttamente le posizioni di verifica dei certificati:
* CAfile: nessuno
CApath: / usr / ssl / certs
* Problema certificato SSL, verificare che il certificato CA sia OK. Dettagli:
errore: 14090086: routine SSL: SSL3_GET_SERVER_CERTIFICATE: verifica certificato non riuscita
* Scadenza cancellata
* Chiusura della connessione n. 0
errore: problema del certificato SSL, verificare che il certificato CA sia OK. Dettagli:
errore: 14090086: routine SSL: SSL3_GET_SERVER_CERTIFICATE: verifica del certificato fallita durante l'accesso a https://github.com/username/ExcelANT.git/info/refs

fatal: HTTP request failed

Si tratta di un problema con il mio firewall, cygwin o cosa?

Non avevo impostato il proxy HTTP nella configurazione Git, tuttavia è un server ISA che ha bisogno dell'autenticazione NTLM, non di base, quindi, a meno che qualcuno non sappia come forzare git ad usare NTLM, sono stato scottato.


Avevo bisogno dei certificati solo per Cygwin e git, quindi ho fatto quello che ha postato @esquifit. Tuttavia, ho dovuto eseguire il passaggio 5 manualmente, c_rehash non era disponibile sul mio sistema. Ho seguito questa guida: installare invece i certificati CA nel framework OpenSSL .


Avevo bisogno di due cose:

  1. vai su Cygwin setup e includi il pacchetto ' ca-certificates ' (è in Net) (come indicato altrove).

  2. Dì a git dove trovare i certificati installati:

    GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...

    (L'opzione dettagliata non è necessaria)

    Oppure memorizza l'opzione in modo permanente:

    git config - global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    idiota ...


Come la risposta più popolare (di Alexey Vishentsev) dice:

Il problema è che nel tuo sistema non sono installati certificati di Autorità di certificazione. E questi certificati non possono essere installati con cygwin's setup.exe.

Tuttavia, quest'ultima asserzione è falsa (ora, o è sempre stata, non lo so).

Tutto quello che devi fare è andare su Cygwin Setup e includere il pacchetto 'ca-certificates' (è in Net). Questo ha fatto il trucco per me.


Hai controllato il tuo tempo?

Mi sono assolutamente rifiutato di rendere insicure le mie operazioni git e dopo aver provato tutto ciò che le persone hanno menzionato qui, mi ha colpito il fatto che una causa possibile perché i certificati non superano la verifica è che le date sono sbagliate (o la data di scadenza del certificato o l'orologio locale ).

Puoi verificarlo facilmente digitando la date in un terminale. Nel mio caso (un nuovo Raspberry Pi), l'orologio locale era impostato sul 1970, quindi un semplice ntpdate -u 0.ubuntu.pool.ntp.org corretto tutto. Per un rPi, ti consiglio anche di inserire il seguente script in un cron job giornaliero (ad esempio /etc/cron.daily/ntpdate ):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1

Ho provato di tutto, alla fine ho cercato nel file hosts e c'era una voce a caso per github. La rimozione dell'alias ha risolto il problema

% SystemRoot% \ system32 \ drivers \ etc \ hosts


Ho riscontrato lo stesso problema per Solaris Express 11. Mi ci è voluto un po 'di tempo ma sono riuscito a trovare il posto in cui posizionare i certificati. Secondo /etc/openssl/openssl.cnf, il percorso per i certificati è / etc / openssl / certs. Ho messo i certificati generati usando il consiglio di Alexey.

Puoi verificare che le cose stiano funzionando usando openssl sulla riga di comando:

openssl s_client -connect github.com:443

Ho risolto questo problema utilizzando apt-cyg (un ottimo programma di installazione simile a apt-get) per scaricare facilmente i certificati ca (incluso Git e molti altri):

apt-cyg install ca-certificates

Nota : apt-cyg dovrebbe essere installato per la prima volta. Puoi farlo dalla riga di comando di Windows:

cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim

Chiudi il cmd di Windows e apri Cygwin Bash:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin

Ho semplicemente disabilitato l'autenticazione del certificato SSL e ho usato il semplice login della password del nome utente come mostrato di seguito


Migliora la soluzione di RouMao disattivando temporaneamente GIT / curl ssl verifica in cmd di Windows:

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

La cosa buona di questa soluzione è che ha effetto solo nella finestra di cmd corrente.


Nota che per far funzionare tutto questo (installazione RVM su CentOS 5.6), ho dovuto eseguire quanto segue:

export GIT_SSL_NO_VERIFY=true

e dopo di ciò, la procedura di installazione standard per il curling del programma di installazione di RVM in bash ha funzionato a meraviglia :)


Per chi usa Msys / MinGW GIT, aggiungi questo

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 


Se hai usato il sistema operativo basato su Debian, puoi semplicemente eseguire

apt-get install ca-certificates


Se tutto ciò che si vuole fare è usare il client git Cygwin con github.com, c'è un modo molto più semplice senza dover passare attraverso il fastidio di scaricare, estrarre, convertire, dividere i file cert. Procedere come segue (sto assumendo Windows XP con Cygwin e Firefox)

  1. In Firefox, vai alla pagina github (qualsiasi)
  2. clicca sull'icona github sulla barra degli indirizzi per visualizzare il certificato
  3. Fai clic su "ulteriori informazioni" -> "visualizza certificato" -> "dettagli" e seleziona ciascun nodo nella gerarchia che inizia con quello più in alto; per ognuno di essi fare clic su "Esporta" e selezionare il formato PEM:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. Salvare i file sopra da qualche parte nell'unità locale, modificare l'estensione in .pem e spostarli in / usr / ssl / certs nell'installazione di Cygwin (Windows: c: \ cygwin \ ssl \ certs)
  5. (facoltativo) Esegui c_reshash dalla bash.

Questo è tutto.

Naturalmente questo installa solo una gerarchia di cert, quella che serve per github. Ovviamente è possibile utilizzare questo metodo con qualsiasi altro sito senza la necessità di installare 200 certificati di siti che non si fidano (necessariamente).


Sentiti libero di saltare questa risposta se vuoi risolvere il problema dei certificati. Questa risposta riguarda il tunneling ssh attraverso il firewall, che è una soluzione migliore per gestire i firewall / proxy.

C'è un modo migliore di usare l'accesso http e cioè usare il servizio ssh offerto da github sulla porta 443 del server ssh.github.com.

Usiamo uno strumento chiamato cavatappi. È disponibile sia per CygWin (tramite l'installazione dalla home page di cygwin) che per Linux utilizzando il tuo strumento di imballaggio preferito. Per MacOSX è disponibile da macports e brew almeno.

La riga di comando è la seguente:

$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

Il proxyhost e il proxyport sono le coordinate del proxy https. Il target e il targetport sono la posizione dell'host su cui effettuare il tunnel. Authfile è un file di testo con 1 riga contenente il nome utente / password del server proxy separati da due punti

per esempio:

abc:very_secret

Installazione per l'utilizzo del protocollo ssh "normale" per la comunicazione git

Aggiungendo questo a ~/.ssh/config questo trucco può essere usato per le normali connessioni ssh.

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

ora puoi testarlo funziona ssh-ing su gitproxy

[email protected]:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
[email protected]:~$

(Nota: se non hai mai effettuato l'accesso a github prima, ssh chiederà di aggiungere la chiave del server al file degli host conosciuti.Se sei paranoico, si consiglia di verificare l'impronta digitale RSA a quella mostrata sul sito github in cui caricato la tua chiave).

Una leggera variante di questo metodo è il caso in cui è necessario accedere a un repository con un'altra chiave, ad esempio per separare il proprio account privato dal proprio account professionale.

# 
# account dedicated for the ACME private github account 
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme

godere!

Lo stiamo usando da anni su Linux, Mac e Windows.

Se vuoi puoi leggere di più in questo post sul blog



Su un sistema Mac OSX 10.5, sono riuscito a farlo funzionare con un metodo semplice. Innanzitutto, esegui le procedure di github e il test, che ha funzionato bene per me, mostrando che il mio certificato era effettivamente ok. https://help.github.com/articles/generating-ssh-keys

ssh -T [email protected]

Poi ho finalmente notato un altro formato di url per i telecomandi. Ho provato gli altri, sopra e non hanno funzionato. http://git-scm.com/book/ch2-5.html

[email protected]:MyGithubUsername/MyRepoName.git

Un semplice "git push myRemoteName" ha funzionato alla grande!


Una soluzione molto semplice: sostituisci https: // con git: //

Usa git: //the.repository invece di https: //the.repository e funzionerà.

Ho avuto questo problema su Windows con TortoiseGit e questo lo ha risolto.


in un pasticcio che ho avuto

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git Clonazione in 'Dropbox-Uploader' ... errore: problema con il certificato CA SSL (percorso? diritti di accesso?) durante l'accesso http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs fatale: richiesta HTTP fallita

quindi id a

sudo apt-get install ca-certificates

poi

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git  

lavorato





ssl-certificate