2014-10-27 10 views
8

TL; DRM2E con SSL l'autenticazione basata su certificati

Come fare di Eclipse built-in Maven connettersi a un repository HTTPS che utilizza l'autenticazione basata su certificati?

Sembra che m2e sia in grado di trovare i keystore, ma non sia in grado di connettersi. Riga di comando Maven funziona come un incantesimo usando esattamente gli stessi keystore. Run as -> Maven build funziona con Maven esterno e non con quello incorporato.

Problema

Ho un progetto Maven con una dipendenza. Tale dipendenza è disponibile in un repository che utilizza l'autenticazione basata su certificato SSL oltre alla normale combinazione nome utente-password. Ho bisogno di farlo funzionare in Eclipse Luna, con il Maven incorporato. Tutto quello che riesco a ottenere è handshake_failure. L'analisi dei registri mostra che il Maven incorporato non è in grado di trovare un certificato corrispondente.

Quando uso Run as -> Maven build con un Maven esterno o Maven da riga di comando, si collega correttamente al repository e recupera l'artefatto esattamente come necessario.

La cosa interessante è che sia Mavens esterni che embedded hanno la stessa versione (3.2.3).

Setup

passo questi parametri attraverso eclipse.ini:

-Djavax.net.ssl.trustStore=java.cacerts 
-Djavax.net.ssl.trustStorePassword=****** 
-Djavax.net.ssl.keyStore=private.cacerts 
-Djavax.net.ssl.keyStorePassword=****** 
-Djavax.net.debug=ssl,handshake 

Il file trustStore contiene:

  • l'intera catena di certificati per il repository mi connetto a (estremità della catena con un certificato autofirmato), uno dei quali è memorizzato sotto lo pseudonimo repository.location.url (letterale posizione del repository qui, ad es. myrepository.com)
  • certificato per Maven centrale

Il file keyStore contiene un certificato PKCS importato sotto falso nome del repository.

Non sembra esserci alcun problema con l'installazione, come funziona la riga di comando Maven. Se uso Maven esterno o riga di comando, funziona. Se eseguo l'incorporamento di uno (che viene sempre utilizzato per risolvere le dipendenze), viene visualizzato handshake error.

Cosa sto sbagliando? Potrei mancare qualcosa di completamente ovvio. Qualsiasi aiuto sarebbe apprezzato.

+0

La mia prima ipotesi sarebbe le impostazioni proxy in Eclipse, ma anche quelle dovrebbero utilizzare il keystore della VM: -/Dispari. Quale versione di Eclipse, Java e m2e? –

+0

@AaronDigulla Eclipse Luna 4.4.1, m2e 1.5.0 (con Maven 3.2.1) e 1.6.0 (3.2.3), Java 1.7 e 1.8 (entrambi jdk e jre) – Sorrow

+0

E hai aggiunto le opzioni '-D' dopo la riga '-vmargs'? –

risposta

3

Ho avuto esattamente lo stesso problema: Eclipse non è riuscito a connettersi al repository di Maven esterno utilizzando l'installazione di Maven incorporata nel caso in cui il repository richieda un certificato SSL client.

Il problema è stato risolto aggiornando l'ultima versione di jvm (nel mio caso 1.8.0u52) e aggiornando il plugin di Eclipse m2e alla versione 1.6.1 (con Eclipse versione 4.4.0).

+0

sembra che l'aggiornamento di m2e abbia fatto il trucco, 1.6.1 non sembra avere questo problema – Sorrow

1

Nelle configurazioni della corsa selezionare la configurazione di Maven, quindi selezionare la scheda JRE nella parte superiore della finestra di dialogo. Metti i tuoi parametri SSL nella text area degli argomenti VM.

questo è ciò che ha risolto per me.

+2

La domanda riguarda Maven incorporato, ovvero quello che Eclipse utilizza internamente per aggiornare il progetto. Quello esterno, cioè quello utilizzato per le configurazioni di corsa, funziona perfettamente. – Sorrow

3

opzioni che non ha funzionato per me

  • Installazione di un Certificato di java> jre> lib> sicurezza> cacerts
  • Fornire cacerts in argomenti VM configurazione di esecuzione Java
  • Aggiornamento Eclipse per ultima versioni come mars o neon
  • Aggiornamento plug-in maven per eclipse su 1.7.0

passaggi che ha risolto il problema per me

  • Download certificate file & aggiungere in Eclipse a Preferenze> sistemi remoti> SSL> Aggiungi
  • Cancella .m2> cartella di repository di tutti i file esistenti
  • Aperto eclipse, fare clic con il tasto destro del mouse sul progetto e selezionare Maven> Aggiorna progetto. Scegli Forza aggiornamento di istantanee/Uscite

aggiornato su 9/19/2017

Problemi correlati