Problemas al usar Maven y SSL detrás del proxy


133

Acabo de descargar Maven y estaba tratando de ejecutar el comando simple que se encuentra en la página "Maven en cinco minutos" ( http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html ). Este es el comando:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Cuando lo ejecuto aparece un error con el certificado SSL y no puedo descargarlo desde el repositorio central de Maven en https://repo.maven.apache.org/maven2 . El error es "SunCertPathBuilderException: no se puede encontrar la ruta de certificación válida para el objetivo solicitado".

Estoy sentado detrás de un firewall corporativo y he configurado correctamente la configuración de proxy para ambos httpy httpsacceso a través del settings.xmlarchivo. Dudo que todos los que descarguen Maven y lo ejecuten por primera vez tengan que importar el certificado SSL del repositorio de Maven, por lo que el problema debe estar en el proxy. ¿Alguien tiene alguna experiencia con esto?

Aquí está el seguimiento de la pila en modo de depuración completa (-X):

 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T22:58:10+02:00)
    Maven home: C:\Projects\maven\bin\..
    Java version: 1.7.0_45, vendor: Oracle Corporation
    Java home: C:\Program Files\Java\jdk1.7.0_45\jre
    Default locale: it_IT, platform encoding: Cp1252
    OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
    [DEBUG] Using connector WagonRepositoryConnector with priority 0.0 for https://repo.maven.apache.org/maven2 via *****:8080 with username=*****, password=***
    Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
    [WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-plugin:2.5: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
    org.apache.maven.plugin.PluginResolutionException: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
            at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:122)
            at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:148)
            at org.apache.maven.plugin.DefaultBuildPluginManager.loadPlugin(DefaultBuildPluginManager.java:81)
            at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolveFromProject(DefaultPluginPrefixResolver.java:138)
            at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolveFromProject(DefaultPluginPrefixResolver.java:121)
            at org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolve(DefaultPluginPrefixResolver.java:85)
            at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.findPluginForPrefix(MojoDescriptorCreator.java:260)
            at org.apache.maven.lifecycle.internal.MojoDescriptorCreator.getMojoDescriptor(MojoDescriptorCreator.java:220)
            at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:103)
            at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:83)
            at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:85)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154)
            at org.apache.maven.cli.MavenCli.execute(MavenCli.java:582)
            at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:606)
            at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
            at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
            at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
            at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
    Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5
            at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:349)
            at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:231)
            at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:288)
            at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:108)
            ... 23 more
    Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve(DefaultArtifactResolver.java:459)
            at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts(DefaultArtifactResolver.java:262)
            at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact(DefaultArtifactResolver.java:239)
            at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:334)
            ... 26 more
    Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$6.wrap(WagonRepositoryConnector.java:1016)
            at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$6.wrap(WagonRepositoryConnector.java:1004)
            at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:725)
            at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run(RunnableErrorForwarder.java:67)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
            at java.lang.Thread.run(Thread.java:744)
    Caused by: org.apache.maven.wagon.TransferFailedException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:935)
            at org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)
            at org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)
            at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)
            at org.eclipse.aether.connector.wagon.WagonRepositoryConnector$GetTask.run(WagonRepositoryConnector.java:660)
            ... 4 more
    Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
            at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884)
            at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276)
            at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270)
            at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341)
            at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153)
            at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868)
            at sun.security.ssl.Handshaker.process_record(Handshaker.java:804)
            at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016)
            at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312)
            at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339)
            at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323)
            at org.apache.maven.wagon.providers.http.httpclient.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:280)
            at org.apache.maven.wagon.providers.http.httpclient.impl.conn.HttpClientConnectionOperator.upgrade(HttpClientConnectionOperator.java:167)
            at org.apache.maven.wagon.providers.http.httpclient.impl.conn.PoolingHttpClientConnectionManager.upgrade(PoolingHttpClientConnectionManager.java:329)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:392)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.execute(MainClientExec.java:218)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec.execute(RetryExec.java:85)
            at org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RedirectExec.execute(RedirectExec.java:108)
            at org.apache.maven.wagon.providers.http.httpclient.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186)
            at org.apache.maven.wagon.providers.http.httpclient.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
            at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.execute(AbstractHttpClientWagon.java:756)
            at org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:854)
            ... 8 more
    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:385)
            at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
            at sun.security.validator.Validator.validate(Validator.java:260)
            at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:326)
            at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:231)
            at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:126)
            at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1323)
            ... 27 more
    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
            at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196)
            at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268)
            at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380)
            ... 33 more

2
Lo resolví siguiendo la respuesta de rec para ignorar la comprobación del certificado SSL.
Evin1_

Respuestas:


182

El hecho es que su complemento Maven intenta conectarse a un repositorio remoto https
(por ejemplo, https://repo.maven.apache.org/maven2/ )

¡Esta es una nueva conectividad SSL para Maven Central disponible en agosto de 2014!

Entonces, ¿puede verificar que su settings.xml tenga la configuración correcta?

    <settings>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>securecentral</activeProfile>
  </activeProfiles>
  <profiles>
    <profile>
      <id>securecentral</id>
      <!--Override the repository (and pluginRepository) "central" from the
         Maven Super POM -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://repo1.maven.org/maven2</url>
          <releases>
            <enabled>true</enabled>
          </releases>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://repo1.maven.org/maven2</url>
          <releases>
            <enabled>true</enabled>
          </releases>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
</settings>

Alternativamente, puede utilizar el repositorio http maven simple como este

 <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Maven Plugin Repository</name>
      <url>http://repo1.maven.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

Avíseme si mi solución funciona;)

J.


2
Gracias por la respuesta rápida y precisa, funcionó para mí y probablemente ayudará a muchas personas que comienzan a usar maven después de agosto de 2014 :-) Mientras tanto, descubrí cómo hacerlo funcionar con SSL. Lo publicaré como una respuesta a continuación para ayudar a otros, pero su respuesta será la aceptada oficialmente. Gracias
Andy

Gracias Andy;) ¿Ambas soluciones funcionan para ti? o solo la alternativa?
biology.info

44
Sí, lo probé y funciona. Sin embargo, en el primer bloque de código tuve que cambiar ambas URL del repositorio de https a http, de lo contrario recibí el mismo mensaje de error que antes. Además, para cualquiera que intente esto, no olvide la etiqueta <activeProfiles>.
Andy

1
Acabo de probar con la segunda solución simple alternativa, funcionó para mí ... Gracias.
Blue Diamond

77
A partir del 15 de enero de 2020, The Central Repository ya no admite comunicaciones inseguras a través de HTTP simple y requiere que todas las solicitudes al repositorio se cifren a través de HTTPS.
Ahmad Alkhatib

183

La respuesta anterior es una buena solución de trabajo, pero aquí le mostramos cómo hacerlo si desea usar el repositorio SSL:

  • Use un navegador (usé IE) para ir a https://repo.maven.apache.org/
    • Haga clic en el icono de candado y elija "Ver certificado"
    • Vaya a la pestaña "Detalles" y elija "Guardar en archivo"
    • Elija el tipo "Base 64 X.509 (.CER)" y guárdelo en algún lugar
  • Ahora abra un símbolo del sistema y escriba (use sus propias rutas):

    keytool -import -file C:\temp\mavenCert.cer -keystore C:\temp\mavenKeystore

  • Ahora puede ejecutar el comando nuevamente con el parámetro

    -Djavax.net.ssl.trustStore=C:\temp\mavenKeystore

  • Bajo linux use ruta absoluta

    -Djavax.net.ssl.trustStore=/tmp/mavenKeystore

    de lo contrario esto sucederá

  • Me gusta esto:

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -Djavax.net.ssl.trustStore=C:\temp\mavenKeystore

Opcional:

Puede usar la MAVEN_OPTSvariable de entorno para no tener que preocuparse nuevamente. Ver más información sobre la MAVEN_OPTSvariable aquí :


15
Esto debe ser aceptado como la respuesta correcta. Su proxy ISA está insertando un certificado intermedio en el que JDK no confía.
Gordon

2
Tengo a Maven trabajando a través de la línea de comando. ¿Cómo hago para que funcione eclipse?
Prabodh Mhalgi

Fácil de cortar y pegar para MAVEN_OPTS: -Xmx512m -Djavax.net.ssl.trustStore = trust.jks -Djavax.net.ssl.trustStorePassword = -Djavax.net.ssl.keyStore = / home / directory / mycertificate.p12 - Djavax.net.ssl.keyStoreType = pkcs12 -Djavax.net.ssl.keyStorePassword = XXXXXX
Al Lelopath

Esto resolvió mi problema. Cuando solicita la contraseña del almacén de claves, el valor predeterminado es "changeit" si aún no la ha cambiado. :)
John Manko

3
Además, en Ubuntu, puede ejecutar el comando comosudo keytool -import -file ./repo.maven.apache.org.crt -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts
John Manko

23

Actualizar

Acabo de tropezar con este informe de error:

https://bugs.launchpad.net/ubuntu/+source/ca-certificates-java/+bug/1396760

Parece ser la causa de nuestros problemas aquí. Algo con ca-certificados-java que encuentra un error y no llena completamente los cacerts. Para mí, esto comenzó a suceder después de actualizar a 15.10 y este error probablemente ocurrió durante ese proceso.

La solución es ejecutar el siguiente comando:

sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure

Si revisa el contenido del almacén de claves (como en mi respuesta original), ahora verá un montón más, incluida la DigiCert Global Root CA necesaria.

Si realizó el proceso en mi respuesta original, puede limpiar la clave que agregamos ejecutando este comando (suponiendo que no haya especificado un alias diferente):

sudo keytool -delete -alias mykey -keystore / etc / ssl / certs / java / cacerts

Maven ahora funcionará bien.


Respuesta original

Solo me gustaría ampliar la respuesta de Andy sobre agregar el certificado y especificar un almacén de claves. Eso me ayudó a comenzar, y combinado con información en otro lugar pude entender el problema y encontrar otra solución (¿mejor?).

La respuesta de Andy especifica un nuevo almacén de claves con el certificado Maven específicamente. Aquí, voy un poco más amplio y agrego el certificado raíz al almacén de confianza predeterminado de Java. Esto me permite usar mvn (y otras cosas de Java) sin especificar un almacén de claves.

Como referencia, mi sistema operativo es Ubuntu 15.10 con Maven 3.3.3.

Básicamente, el almacén de confianza de Java predeterminado en esta configuración no confía en el certificado raíz del repositorio de Maven (DigiCert Global Root CA), por lo que debe agregarse.

Lo encontré aquí y descargué:

https://www.digicert.com/digicert-root-certificates.htm

Luego encontré la ubicación predeterminada del almacén de confianza, que reside aquí:

/ etc / ssl / certs / java / cacerts

Puede ver qué certs hay actualmente ejecutando este comando:

keytool -list -keystore / etc / ssl / certs / java / cacerts

Cuando se le solicite, la contraseña predeterminada del almacén de claves es "changeit" (pero nadie lo hace nunca).

En mi configuración, la huella digital de "DigiCert Global Root CA" no existía (DigiCert lo llama "huella digital" en el enlace de arriba). Así que aquí está cómo agregarlo:

sudo keytool -import -file DigiCertGlobalRootCA.crt -keystore / etc / ssl / certs / java / cacerts

Esto debería indicar si confía en el certificado, diga sí.

Use keytool -list nuevamente para verificar que la clave existe. No me molesté en especificar un alias (-alias), por lo que terminó así:

mykey, 2 de diciembre de 2015, TrustedCertEntry, huella digital del certificado (SHA1): A8: 98: 5D: 3A: 65: E5: E5: C4: B2: D7: D6: 6D: 40: C6: DD: 2F: B1: 9C : 54: 36

Luego pude ejecutar los comandos mvn de manera normal, sin necesidad de especificar el almacén de claves.


Gracias a Andy Y a Leeland que volvió a publicar su blog. nodsw.com/blog/leeland/2006/12/… Y a ti también, @Luke.
ajoshi

13

Puedes usar la -Dmaven.wagon.http.ssl.insecure=trueopción


11

Puede importar el certificado SSL manualmente y simplemente agregarlo al almacén de claves.

Para usuarios de Linux,

Sintaxis:

keytool -trustcacerts -keystore / jre / lib / security / cacerts -storepass changeit -importcert -alias nexus -file

Ejemplo:

keytool -trustcacerts -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -importcert -alias nexus -file ~ / Downloads / abc.com-ssl. crt


Al principio, aún tiene que guardar el certificado como se describe en la respuesta de Andy . Entonces la extensión sería ".cer".
sjngm

9

Esta puede no ser la mejor solución. Cambié mi maven de 3.3.x a 3.2.x. Y este problema desapareció.


Intenté instalar los certificados durante un par de horas sin suerte, ¡y esta solución finalmente funcionó! La última versión de maven que puse a trabajar fue 3.2.2.
jlars62

3.3.3 y 3.2.5 no funcionaron para mí, pero 3.0.5 funcionó
ROMANIA_engineer

Terminé aquí desde un motor de búsqueda, pero estoy usando Gradle en lugar de Maven. La actualización de mi versión anterior de Gradle también me solucionó estos problemas extraños de SSL.
Nik Reiman

6

En realidad tuve el mismo problema.

cuando corro

paquete limpio mvn

en mi proyecto maven, recibo este error de certificado por la herramienta maven.

Seguí la respuesta de @Andy hasta el punto en que descargué el archivo .cer archivo

después de eso, el resto de la respuesta no funcionó para mí, pero hice lo siguiente (estoy ejecutando en una máquina Linux Debian)

en primer lugar, ejecuta:

keytool -list -keystore "Ruta de Java +" / jre / lib / security / cacerts ""

por ejemplo en mi caso es:

keytool -list -keystore / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / security / cacerts

si le pregunta sobre la contraseña, simplemente presione enter.

Se supone que este comando enumera todos los certificados SSL aceptados por Java. cuando ejecuté este comando, en mi caso obtuve 93 certificados, por ejemplo.

Ahora agregue el archivo descargado .cer al archivo cacerts ejecutando el siguiente comando:

sudo keytool -importcert -file /home/hal/Public/certificate_file_downloaded.cer -keystore / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / security / cacerts

escriba su contraseña de sudo y luego le preguntará acerca de contraseña del almacén de claves

el predeterminado es changeit

entonces di y que confía en este certificado.

si ejecutas el comando

keytool -list -keystore / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / security / cacerts

una vez más, en mi caso, obtuve 94 contenidos de los cacerts archivo

significa que se agregó con éxito.


2

Una solución rápida es agregar este código en su pom.xml:

<repositories>
    <repository>
        <id>central</id>
        <name>Maven Plugin Repository</name>
        <url>http://repo1.maven.org/maven2</url>
        <layout>default</layout>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <releases>
            <updatePolicy>never</updatePolicy>
        </releases>
    </repository>
</repositories>

Donde nunca es para evitar la búsqueda de un certificado.


1
Vale la pena desplazarse hacia abajo en el hilo de respuestas. Esto funcionó simplemente!
plata

1

Recibía el mismo error sobre el certificado SSL cuando Maven intentó descargar los módulos necesarios automáticamente.
Como remedio, estaba intentando implementar la respuesta de Luke anterior, pero descubrí que el certificado DigiCert Global Root CA ya está en el almacén de claves de confianza de Java.

Lo que me ayudó fue agregar %JAVA_HOME%\bina la variable Ruta (estoy ejecutando Windows). Y %JAVA_HOME%es una ubicación JDK, no solo una ubicación JRE, ya que Maven necesita un JDK.
No estoy seguro de por qué ayudó, pero lo hizo. Estoy absolutamente seguro de que esto fue lo único que cambié.



1

Paso 1: OBTENGA el contenido del Certificado del sitio web (desea que se importe como raíz confiable)

$ keytool -printcert -rfc -sslserver maven.2xoffice.com*

-----BEGIN CERTIFICATE-----
MIIFNTCCBB2gAwIBAgIHJ73QrVnyJjANBgkqhkiG9w0BAQsFADCBtDELMAkGA1UEBhMCVVMxEDAO
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE3jCCA8agAwIBAgICAwEwDQYJKoZIhvcNAQEFBQAwYzELMAkGA1UEBhMCVVMxITAfBgNVBAoT
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
...
-----END CERTIFICATE-----
The -rfc option outputs the certificate chain in PEM-encoded format for easy import back into a keystore.

Paso 2: guarde todo (incluidas las líneas BEGIN CERTIFICATE y END CERTIFICATE, que son importantes en este caso) como godaddyg2.pem e impórtelo a mi tienda de confianza a través de:

Paso 3: importe el certificado en el almacén de claves (almacén de claves de confianza de Java)

$ keytool -importcert -file ./godaddyg2.pem -keystore $JRE_LIB/lib/security/cacerts

1

Lo que funcionó para mí:

Configurar <proxy> ajustes en ${MAVEN_HOME}/conf/settings.xml:

(Nota: para otros, funcionó cuando configuraron ${user.home}/.m2/settings.xml. Si no hay settings.xml en user.home, simplemente cópielo desde conf / en el directorio maven).

  <!-- proxies
   | This is a list of proxies which can be used on this machine to connect to the network.
   | Unless otherwise specified (by system property or command-line switch), the first proxy
   | specification in this list marked as active will be used.
   |-->
  <proxies>
    <!-- proxy
     | Specification for one proxy, to be used in connecting to the network.
     |
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
    -->

    <proxy>
      <id>my-proxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <username></username>
      <password></password>
      <host>my.proxy.host.com</host>
      <port>8080</port>
      <nonProxyHosts></nonProxyHosts>
    </proxy>

  </proxies>

Luego apunte pom.xmla descargar desde http maven central repo:

<project>
...
    <repositories>
        <repository>
            <id>central</id>
            <name>Maven Plugin Repository</name>
            <url>http://repo1.maven.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </repository>
    </repositories>
...
</project>

También es posible que deba configurar el proxy http en su IDE. Para VSCode en settings.json:

{
    ...
    "http.proxy": "http://my/proxy/script/address/my-proxy.pac",
    ...
}

Para Win10: Inicio / Búsqueda> Configuración del proxy de red> Dirección de script ingrese la descripción de la imagen aquí

Fuentes:


0

Me encontré con este problema en la misma situación, y escribí una respuesta detallada a una pregunta relacionada sobre el desbordamiento de la pila explicando cómo modificar más fácilmente los cacerts del sistema usando una herramienta GUI. Creo que es un poco mejor que usar un almacén de claves único para un proyecto específico o modificar la configuración de Maven (que puede causar problemas en el futuro).


0

Aunque estaba poniendo los certificados en cacerts, todavía recibía el error. Resulta que los estaba poniendo en jre, no en jdk / jre.

¡Hay dos tiendas de claves, tenlo en cuenta!


0

El problema que obtuve es antes, estaba usando jdk 1.8.0_31 con el certificado instalado. Cambié a jdk 1.8.0_191 pero no instalé el certificado.

Pero, mis proyectos funcionaban bien, me di cuenta de que sus dependencias ya estaban descargadas. Por lo tanto, solo compilarían y empaquetarían esos proyectos. Pero, esto no funcionó para nuevos proyectos maven ya que sus dependencias no se descargaron antes.

Solución::

  1. Cambie a la versión jdk anterior (que ya tenía el certificado instalado) para su nuevo proyecto y realice una instalación limpia
  2. Descargue el certificado nuevamente para la nueva versión jdk a la que se cambió recientemente y luego realice una instalación limpia

0

Después de crear el almacén de claves mencionado por @Andy. En Eclipse, agregué los args jvm y funcionó.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí


0

Tuve el mismo problema con SSL y Maven. La política de TI de mi empresa me limita a realizar cambios en la configuración de las computadoras, por lo que copié todo el .m2 de mi otra computadora y lo pegué, y funcionó.

La carpeta .m2 generalmente se encuentra en c \ user \ admin


-1

Otra causa más: si abre Charles, también podría resolver este problema, en este caso simplemente renunciar a Charles.


-1

Simplemente utilicé la nueva versión de Java y funcionó para mí.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.