2011-11-14 17 views
6

Mi piacerebbe utilizzare un repository git accessibile tramite https, il server Https ha un certificato autofirmato. Ottengo sempre un errore durante il tentativo di clonare il repo con Eclipse + egit:egit con certificato autofirmato, https

https://host/path: impossibile aprire il git-upload-pack sun.security.validator.ValidatorException: PKIX edificio percorso fallito: sun.security. provider.certpath.SunCertPathBuilderException: incapace di trovare valido percorso di certificazione di destinazione

richiesto E 'possibile aggirare questo problema? Ho usato il comando export GIT_SSL_NO_VERIFY=1 per saltare la verifica ssl con il client della console. Questo trucco non funziona con Eclipse.

Grazie,

Hubi

risposta

11

È anche possibile impostare EGit di ignorare la verifica del server. In Eclipse vai su Finestra -> Preferenze.

Da lì vai a squadra -> Git -> Configurazione

Fare clic su "New Entry"

chiave: http.sslVerify Valore: true

Fare clic su "OK"

Click "OK"

Per un approccio più dettagliato a questo check out il mio post del blog qui: http://www.pur-logic.com/2012/04/21/egit-self-signed-certificate/

+0

È lo stesso problema se viene utilizzato l'indirizzo IP invece del nome host? – Chris

+2

Come indicato in numerose risposte relative all'argomento "certificati autofirmati e git" usando 'http.sslVerify: false' è una ** pratica terribile da PoV di sicurezza ** e dovrebbe essere un'assoluta ultima risorsa, specialmente che ci sono altri opzioni. Questa risposta risolve il problema e si apre agli altri, normalmente considerati molto più severi. Ma hey, anche gli hacker devono mangiare, giusto? :) Il problema principale qui è che il certificato autofirmato non è considerato affidabile da java utilizzato da egit/eclipse. E la soluzione è semplicemente quella di registrarlo in cacert. – shturec

+0

+1 @shturec! Non stai disabilitando la verifica ssl per un sito, ma TUTTI i siti quando fai questo. È una soluzione terribile e molto pericolosa. –

5

è necessario importare il certificato nel vostro keystore (sia le cacerts chiavi predefinita nella directory JDK o si specifica uno con il parametro -Djavax.net.ssl.trustStore) .

+0

A differenza della risposta selezionata dall'autore questo non le vulnerabilità di sicurezza aperta e dovrebbe essere la preferita in quanto è un soluzione per il problema esatto qui - il java utilizzato da egit non riconosce il certificato come affidabile. – shturec

0

Il FAQ of CAcert fornisce la riga di comando per il keytool:

keytool -keystore $/PATH/TO/CACERTS/KEYSTORE -storepass changeit -import -trustcacerts -v -alias cacertclass1 -file root.crt 
  • Alla fine si devono omettere -trustcacerts per importare un normale certificato di .
  • -alias potrebbe anche essere inutile
0

Ho avuto qualche problema anche con questo, ma con una storia diversa. Il nome host per il repository Git non corrisponde al nome host del cert. La soluzione era di cambiare il certificato in modo che corrispondesse al nome host.

+0

Puoi spiegare come hai fatto questo? Penso che questo sia anche il mio problema –

Problemi correlati