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.

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"

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.


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.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.