Come dire a Maven di ignorare gli errori SSL (e di fidarsi di tutti i certificati)?


106

Ho spesso bisogno di eseguire il comando "mvn":

mvn -f pom.xml clean install -Dmaven.test.skip=false --settings /Users/myhome/settings.xml -X -Djavax.net.ssl.trustStore=/Users/myhome/truststore.jks -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=dummy -Djava.protocol.handler.pkgs=com.sun.net.ssl.internal.www.protocol -U

Poiché ho bisogno di integrarmi con vari altri domini, attualmente ogni volta devo aggiungere il loro certificato al mio truststore.jks per evitare errori di handshake SSL.

C'è un modo per configurare mvn per ignorare gli errori SSL.

Risposte:


235

È possibile disabilitare il controllo del certificato SSL aggiungendo uno o più di questi parametri della riga di comando:

  • -Dmaven.wagon.http.ssl.insecure=true - abilitare l'uso del controllo SSL rilassato per i certificati generati dagli utenti
  • -Dmaven.wagon.http.ssl.allowall=true- abilitare la corrispondenza del certificato X.509 del server con il nome host. Se disabilitato, verrà utilizzato un controllo simile al browser.
  • -Dmaven.wagon.http.ssl.ignore.validity.dates=true - ignora i problemi con le date dei certificati.

Documentazione ufficiale: http://maven.apache.org/wagon/wagon-providers/wagon-http/

Ecco l'oneliner per un facile copia e incolla:

-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true

Ajay Gautam ha suggerito di aggiungere quanto sopra al ~/.mavenrcfile per non doverlo specificare ogni volta dalla riga di comando:

$ cat ~/.mavenrc 
MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true"

1
Ho un progetto spring boot / maven e sto usando maven-jaxb2-plugin per generare sorgenti di un servizio web. ma il certificato è scaduto. Quindi ho provato a eseguire il Maven per generare sorgenti con gli argomenti sopra in Eclipse. Ma ricevo ancora l'errore "controllo timestamp fallito", qualsiasi idea di come risolverlo in un ambiente eclissi / maven.
Mukun

14
La risposta non funziona per me. Sto usando Maven 3.5.0 e le eccezioni che ho ricevuto sono state PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. Wagon funziona con MAven 3.5.0?
thlim

Invece, ho creato un truststore jks e ho indicato Maven a questo file jks.
thlim

3
Installando Java Cryptography Extension (JCE) Unlimited Strength (per JDK7 | per JDK8 ) risolvi il problema per me su Maven 3.5.0
skadya

1
Utilizzando netbeans 6.8 ho aggiunto le opzioni alle opzioni di netbeans maven in "Opzioni di esecuzione globali" tramite l'interfaccia utente e sono stato in grado di scaricare dai repository utilizzando https.
Dan675

46

Un'alternativa che ha funzionato per me è dire a Maven di utilizzare http: invece di https: quando si utilizza Maven Central aggiungendo quanto segue a settings.xml :

<settings>
   .
   .
   .
  <mirrors>
    <mirror>
        <id>central-no-ssl</id>
        <name>Central without ssl</name>
        <url>http://repo.maven.apache.org/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>
   .
   .
   .
</settings>

Il tuo chilometraggio può ovviamente variare.


2
Grazie, ha funzionato! E per favore una nota per ripristinare una volta che SSL funziona perché questo potrebbe portare gli utenti ad aggiungere repository non standard che potrebbero ospitare chissà cosa
asgs

3
Questo non funziona da gennaio 2020 perché il repository Maven ha disabilitato la connessione http
Justin

1
Riceverà questo errore da gennaio 2020: ReasonPhrase: HTTPS Required ", perché il repository Maven ha disabilitato la connessione HTTP
Justin

8

Crea una cartella ${USER_HOME}/.mvn e inserisci un file chiamato maven.configin essa.

Il contenuto dovrebbe essere:

-Dmaven.wagon.http.ssl.insecure=true
-Dmaven.wagon.http.ssl.allowall=true
-Dmaven.wagon.http.ssl.ignore.validity.dates=true

Spero che questo ti aiuti.


Riesco a utilizzare direttamente quei parametri sulla riga di comando, ma non riesco ancora ad aggiungerli al file
Justin

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.