在代理后使用Maven和SSL时出现问题。

179

我刚刚下载了Maven,正在尝试运行“Maven五分钟入门”页面上找到的简单命令(http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html)。命令如下:

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
当我运行它时,我遇到了SSL证书错误,无法从中央Maven仓库https://repo.maven.apache.org/maven2下载。错误是“SunCertPathBuilderException: unable to find valid certification path to requested target”。
我坐在公司防火墙后面,并正确配置了settings.xml文件以通过httphttps访问代理设置。我怀疑每个下载Maven并首次运行它的人都必须导入Maven仓库的SSL证书,所以问题肯定出在代理上。有没有人有相关经验?
这里是完整调试模式(-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
我按照rec的答案解决了它,以忽略SSL证书检查。 - Evin1_
26个回答

244
上面的答案是一个有效的解决方案,但如果您想使用SSL仓库,以下是如何操作:
  • 使用浏览器(我使用了IE)打开https://repo.maven.apache.org/,然后单击锁图标并选择“查看证书”
  • 进入“详细信息”选项卡,选择“保存到文件”,并选择类型“Base 64 X.509 (.CER)”,将其保存在某个地方
  • 现在打开命令提示符并输入以下内容(请使用自己的路径):
  • keytool -import -file C:\temp\mavenCert.cer -keystore C:\temp\mavenKeystore

  • 现在,您可以再次运行带有参数的命令
  • -Djavax.net.ssl.trustStore=C:\temp\mavenKeystore

  • 在Linux中,请使用绝对路径
  • -Djavax.net.ssl.trustStore=/tmp/mavenKeystore

    否则将会发生这种情况

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

可选项:

您可以使用MAVEN_OPTS环境变量,这样您就不必再担心它了。在此处查看有关MAVEN_OPTS变量的更多信息:here:


20
这应该被接受为正确答案。您的ISA代理插入了一个中间证书,而这个证书不被JDK信任。 - Gordon
2
我已经通过命令行成功使用了Maven。如何在Eclipse中使用它? - Prabodh Mhalgi
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
1
这解决了我的问题。当它要求输入密钥库密码时,默认值为“changeit”,如果您尚未更改它的话。 :) - John Manko
4
在Ubuntu上,您可以运行以下命令:sudo keytool -import -file ./repo.maven.apache.org.crt -keystore /usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts - John Manko
显示剩余4条评论

195

事实是,您的 Maven 插件尝试连接到一个 HTTPS 远程仓库
(例如 https://repo.maven.apache.org/maven2/)。

这是 Maven Central 的新 SSL 连接功能,可以从2014年8月开始使用!

因此,请检查您的 settings.xml 是否有正确的配置。

    <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>

您也可以像这样使用简单的http Maven仓库:

 <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>

如果我的解决方案可行,请告诉我;)

J.


2
感谢您的快速和准确回复,它对我有用,并且可能会帮助许多在2014年8月之后开始使用maven的人:-) 与此同时,我已经找出了如何使其在SSL下工作。我将在下面发布它作为答案以帮助其他人,但是您的答案将被正式接受。谢谢! - Andy
谢谢Andy ;) 两个解决方案都对你有用吗?还是只有替代方案? - biology.info
4
是的,我尝试过并且有效。不过,在第一个代码块中,我不得不将两个存储库的 URL 从 https 改为 http,否则我会得到与之前相同的错误消息。另外,对于任何人尝试这个方法,不要忘记 <activeProfiles> 标签。 - Andy
1
刚尝试了第二种简单的解决方案,对我有效...谢谢。 - Blue Diamond
14
自2020年1月15日起,中央仓库不再支持不安全的HTTP通信,并要求所有对仓库的请求都必须通过HTTPS进行加密。 - Ahmad Alkhatib
显示剩余9条评论

87
您可以使用-Dmaven.wagon.http.ssl.insecure=true选项。

太棒了!对我来说最简单和最容易的。 - fig

28

更新

我刚刚发现了这个错误报告:

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

看起来这是我们遇到问题的原因。ca-certificates-java遇到错误,没有完全填充cacerts。对我来说,在升级到15.10后开始出现这种情况,这个错误可能发生在那个过程中。

解决方法是执行以下命令:

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

如果你检查密钥库的内容(如我的原始答案所述),你现在会看到更多的内容,包括所需的DigiCert Global Root CA。

如果你按照我的原始答案进行了操作,可以通过运行此命令(假设你没有指定其他别名)来清除我们添加的密钥:

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

Maven现在将正常工作。


原始答案

我想进一步扩展Andy关于添加证书和指定密钥库的答案。这让我开始思考,并结合其他信息,我能够理解问题并找到另一个(更好的?)解决方案。

Andy的答案指定了一个新的密钥库和Maven证书。在这里,我更广泛地添加根证书到默认java信任库中。这使我可以使用mvn(和其他java工具)而不需要指定密钥库。

以便参考,我的操作系统是Ubuntu 15.10,Maven 3.3.3。

基本上,在这个设置中,默认的java信任库不信任Maven repo(DigiCert Global Root CA)的根证书,因此需要添加它。

我在这里找到并下载了它:

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

然后我找到了默认信任库的位置,位于这里:

/etc/ssl/certs/java/cacerts

你可以通过运行以下命令查看当前有哪些证书:

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

提示时,默认的密钥库密码为"changeit"(但没有人这样做)。

在我的设置中,"DigiCert Global Root CA"的指纹不存在(DigiCert在上面的链接中称其为"thumbprint")。所以这里是如何添加它的:

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

这将提示您是否信任证书,请选择是。

使用keytool -list再次验证密钥是否存在。我没有指定别名(-alias),所以结果如下:

mykey, Dec 2, 2015, trustedCertEntry, Certificate fingerprint (SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36

然后,我就可以像平常一样运行mvn命令,无需指定密钥库。


感谢Andy。感谢重新发布他的博客的Leeland。http://nodsw.com/blog/leeland/2006/12/06-no-more-unable-find-valid-certification-path-requested-target也感谢你,@Luke。 - ajoshi

13

我其实遇到了同样的问题。

当我在我的maven项目上运行

mvn clean package

时,我得到了maven工具发出的证书错误。

我按照@Andy的答案操作,直到下载了.cer文件为止。

之后,答案的剩余部分对我没有用,但我做了以下操作(我正在Linux Debian机器上运行):

首先运行:

keytool -list -keystore "Java路径+"/jre/lib/security/cacerts"

例如,在我的情况下是:

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

如果询问密码,请只需按回车键。

这个命令应该列出Java接受的所有ssl证书。当我运行这个命令时,在我的情况下,我得到了93个证书。

现在通过运行以下命令将下载的.cer文件添加到cacerts文件中:

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

输入您的sudo密码,然后它会询问keystore密码

默认密码为changeit

然后说y表示信任此证书。

如果再次运行以下命令:

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

在我的情况下,我得到了cacerts文件的94个内容。

这意味着,它已成功添加。


1
这是最安全和透明的方式,如果您信任 .cer 文件。感谢您的贡献! - Fer Mena

13

您可以手动导入SSL证书并将其添加到密钥库中。

对于Linux用户,

语法:

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

示例:

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


首先,您仍然需要按照Andy的答案中所述保存证书。因此,扩展名应为“.cer”。 - sjngm

10

如果这种情况是由公司防火墙引起的,并且您正在使用Windows,那么您的Windows证书存储很可能已经配置为信任该防火墙。您可以通过在命令行或者MAVEN_OPTS中添加选项-Djavax.net.ssl.trustStoreType=WINDOWS-ROOT,告诉Java依赖于Windows证书。


1
从Maven 3.3.1及更高版本开始,可以将其作为配置文件添加到您的项目目录中。${maven.projectBasedir}/.mvn/jvm.config - Sago78

9

这可能不是最好的解决方法。我将我的maven从3.3.x改为了3.2.x,然后这个问题就消失了。


我尝试了几个小时安装证书,但都没有成功,最终这个解决方案起作用了!我成功运行的最新版本的Maven是3.2.2。 - jlars62
1
3.3.3和3.2.5对我来说不起作用,但3.0.5可以。 - ROMANIA_engineer
我是通过搜索引擎来到这里的,但我使用的是Gradle而不是Maven。更新我的旧版本Gradle也为我解决了这些奇怪的SSL问题。 - Nik Reiman

8

步骤 1:获取网站证书的内容(您希望将其导入为受信任的根)

$ 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.

步骤二:将整个东西(包括起始证书和终止证书行,这在此情况下非常重要)保存为godaddyg2.pem文件,然后通过以下方式将其导入到我的信任存储库中:

步骤三:将证书导入密钥库(Java可信密钥库)中。

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

6
这是因为您的Maven插件尝试连接到一个HTTPS远程仓库(https://repo.maven.apache.org/maven2)或(https://repo1.maven.apache.org)。以前,您可以更改这些URL以使用HTTP而不是HTTPS,但自2020年1月15日起,这些URL不再起作用,只有HTTPS URL。为了轻松解决此问题,您可以在settings.xml文件中使用不安全的Maven URL。因此,您需要将所有上述引用更改为:http://insecure.repo1.maven.org/maven2/ 提示:您的JAVA_HOME变量始终需要指向JDK路径,而不是JRE路径,例如:“C:\Program Files\Java\jdk1.7.0_80”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接