Comment dire à Maven de ne pas tenir compte des erreurs SSL (et de faire confiance à tous les certificats)?

106

J'ai souvent besoin d'exécuter la commande "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

Comme j'ai besoin de m'intégrer à divers autres domaines, je dois donc à chaque fois ajouter leur certificat à mon truststore.jks pour éviter les erreurs de négociation SSL.

Est-il possible que je puisse configurer mvn pour ignorer les erreurs SSL.

Utilisateur novice
la source

Réponses:

237

Vous pouvez désactiver la vérification des certificats SSL en ajoutant un ou plusieurs de ces paramètres de ligne de commande:

  • -Dmaven.wagon.http.ssl.insecure=true - activer l'utilisation d'une vérification SSL assouplie pour les certificats générés par l'utilisateur
  • -Dmaven.wagon.http.ssl.allowall=true- activer la correspondance du certificat X.509 du serveur avec le nom d'hôte. Si désactivé, un navigateur comme check sera utilisé.
  • -Dmaven.wagon.http.ssl.ignore.validity.dates=true - ignorez les problèmes avec les dates de certificat.

Documentation officielle: http://maven.apache.org/wagon/wagon-providers/wagon-http/

Voici le oneliner pour un copier-coller facile:

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

Ajay Gautam a suggéré que vous puissiez également ajouter ce qui précède au ~/.mavenrcfichier pour ne pas avoir à le spécifier à chaque fois en ligne de commande:

$ cat ~/.mavenrc 
MAVEN_OPTS="-Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true"
rec
la source
1
J'ai un projet spring boot / maven et j'utilise maven-jaxb2-plugin pour générer les sources d'un webservice. mais le certificat a expiré. J'ai donc essayé d'exécuter le maven generate sources avec les agruments ci-dessus dans Eclipse. Mais j'obtiens toujours l'erreur "la vérification d'horodatage a échoué" toute idée de la façon de la résoudre dans un environnement eclipse / maven.
Mukun
14
La réponse ne fonctionne pas pour moi. J'utilise maven 3.5.0 et les exceptions que j'ai reçues étaient PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. Le wagon fonctionne-t-il avec MAven 3.5.0?
jeudi
Au lieu de cela, j'ai créé un truststore jks et dirigé maven vers ce fichier jks.
jeudi
3
En installant l'extension de cryptographie Java (JCE) Unlimited Strength (pour JDK7 | pour JDK8 ), corrigez le problème pour moi sur maven 3.5.0
skadya
1
En utilisant netbeans 6.8, j'ai ajouté les options aux options netbeans maven sous `` Options globales d'exécution '' via l'interface utilisateur et j'ai pu télécharger à partir de référentiels en utilisant https.
Dan675
46

Une alternative qui a fonctionné pour moi est de dire à Maven d'utiliser http: au lieu de https: lors de l'utilisation de Maven Central en ajoutant ce qui suit à 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>

Votre kilométrage peut bien sûr varier.

Richard Steele
la source
2
Merci, cela a fonctionné! Et s'il vous plaît une note pour revenir une fois que SSL fonctionne, car cela pourrait conduire les utilisateurs à ajouter des référentiels non standard qui pourraient héberger qui sait quoi
asgs
3
Cela ne fonctionne pas depuis janvier 2020 car Maven repo a désactivé la connexion http
Justin le
1
Obtiendra cette erreur depuis janvier 2020: ReasonPhrase: HTTPS requis ", car le dépôt Maven a désactivé la connexion Http
Justin le
8

Créez un dossier ${USER_HOME}/.mvn et placez-y un fichier appelé maven.config.

Le contenu doit être:

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

J'espère que cela t'aides.

Nicola Ben
la source
Je réussis à utiliser directement ces paramètres sur la ligne de commande, mais j'ai toujours échoué lors de leur ajout dans le fichier
Justin le