¿Cómo decirle a Maven que ignore los errores de SSL (y que confíe en todos los certificados)?

106

Con frecuencia necesito ejecutar el 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

Como necesito integrarme con varios otros dominios, actualmente cada vez que tengo que agregar su certificado a mi truststore.jks para evitar errores de protocolo de enlace SSL.

¿Hay alguna forma de que pueda configurar mvn para ignorar los errores de SSL?

Usuario novato
fuente

Respuestas:

235

Puede deshabilitar la verificación del certificado SSL agregando uno o más de estos parámetros de línea de comando:

  • -Dmaven.wagon.http.ssl.insecure=true - habilitar el uso de la verificación SSL relajada para los certificados generados por el usuario.
  • -Dmaven.wagon.http.ssl.allowall=true- habilitar la coincidencia del certificado X.509 del servidor con el nombre de host. Si está deshabilitado, se utilizará una verificación similar a la del navegador.
  • -Dmaven.wagon.http.ssl.ignore.validity.dates=true - ignore los problemas con las fechas de los certificados.

Documentación oficial: http://maven.apache.org/wagon/wagon-providers/wagon-http/

Aquí está el delineador para copiar y pegar fácilmente:

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

Ajay Gautam sugirió que también podría agregar lo anterior al ~/.mavenrcarchivo para no tener que especificarlo cada vez en la línea de 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"
rec
fuente
1
Tengo el proyecto spring boot / maven y estoy usando maven-jaxb2-plugin para generar fuentes de un servicio web. pero el certificado expiró. Así que intenté ejecutar las fuentes de generación de maven con los parámetros anteriores en Eclipse. Pero sigo recibiendo el error "error en la verificación de la marca de tiempo", cualquier idea de cómo resolverlo en un entorno eclipse / maven.
Mukun
14
La respuesta no me funciona. Estoy usando maven 3.5.0 y las excepciones que recibí fueron PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target. ¿Wagon funciona con MAven 3.5.0?
thlim
En su lugar, creé un jks de almacén de confianza y apunté a Maven a este archivo jks.
thlim
3
Al instalar Java Cryptography Extension (JCE) Unlimited Strength (para JDK7 | para JDK8 ), solucione el problema en maven 3.5.0
skadya
1
Usando netbeans 6.8, agregué las opciones a las opciones de netbeans maven en 'Opciones de ejecución global' a través de la interfaz de usuario y pude descargar desde repositorios usando https.
Dan675
46

Una alternativa que funcionó para mí es decirle a Maven que use http: en lugar de https: cuando use Maven Central agregando lo siguiente 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>

Su kilometraje puede variar, por supuesto.

Richard Steele
fuente
2
¡Gracias, funcionó! Y tenga en cuenta que debe revertirse una vez que SSL funcione porque esto podría llevar a los usuarios a agregar repositorios no estándar que podrían alojar quién sabe qué
asgs
3
Esto no funciona desde enero de 2020 porque el repositorio de Maven deshabilitó la conexión http
Justin
1
Recibirá este error desde enero de 2020: ReasonPhrase: HTTPS Required ", porque el repositorio de Maven deshabilitó la conexión Http
Justin
8

Cree una carpeta ${USER_HOME}/.mvn y coloque un archivo llamado maven.configen ella.

El contenido debe ser:

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

Espero que esto ayude.

Nicola Ben
fuente
Logré usar directamente esos parámetros en la línea de comando, pero aún así fallé al agregarlos al archivo
Justin