我刚刚下载了Maven,并试图运行在" Maven in Five Minutes"页面(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证书的错误,无法从https://repo.maven.apache.org/maven2的中央Maven存储库下载。错误是" SunCertPathBuilderException:无法找到所请求目标的有效证书路径"。
我坐在公司防火墙后面,并通过http
文件正确配置了https
和settings.xml
访问权限的代理设置。我怀疑所有下载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版本:1.7.0_45,供应商:Oracle Corporation Java home:C:\ Program Files \ Java \ jdk1.7.0_45 \ jre 默认语言环境:it_IT,平台编码:Cp1252 操作系统名称:" Windows 7",版本:" 6.1",arch:" amd64",系列:" windows" [DEBUG]使用连接器WagonRepositoryConnector,优先级为0.0,https://repo.maven.apache.org/maven2通过*****:8080 username = *****,密码= *** 正在下载:https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom [警告]无法检索org.apache.maven.plugins的插件描述符:maven-clean-plugin:2.5:插件 org.apache.maven.plugins:maven-clean-plugin:2.5或其中一个 无法解析依赖项:无法读取工件描述符 for org.apache.maven.plugins:maven-clean-plugin:jar:2.5 org.apache.maven.plugin.PluginResolutionException:插件org.apache.maven.plugins:maven-clean-plugin:2.5或其中一个 无法解析依赖项:无法读取工件描述符 for org.apache.maven.plugins:maven-clean-plugin:jar:2.5 在org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:122) 在org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:148) 在org.apache.maven.plugin.DefaultBuildPluginManager.loadPlugin(DefaultBuildPluginManager.java:81) 在org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolveFromProject(DefaultPluginPrefixResolver.java:138) 在org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolveFromProject(DefaultPluginPrefixResolver.java:121) 在org.apache.maven.plugin.prefix.internal.DefaultPluginPrefixResolver.resolve(DefaultPluginPrefixResolver.java:85) 在org.apache.maven.lifecycle.internal.MojoDescriptorCreator.findPluginForPrefix(MojoDescriptorCreator.java:260) 在org.apache.maven.lifecycle.internal.MojoDescriptorCreator.getMojoDescriptor(MojoDescriptorCreator.java:220) 在org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:103) at org.apache.maven.lifecycle.internal.DefaultLifecycleTaskSegmentCalculator.calculateTaskSegments(DefaultLifecycleTaskSegmentCalculator.java:83) 在org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:85) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) 在org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) 在org.apache.maven.cli.MavenCli.execute(MavenCli.java:582) 在org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214) 在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) 在org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 在org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 在org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 在org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 引起:org.eclipse.aether.resolution.ArtifactDescriptorException:失败 读取工件描述符 org.apache.maven.plugins:Maven的清理插件:罐子: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) 在org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:108) ......还有23个 引起:org.eclipse.aether.resolution.ArtifactResolutionException:不能 传输工件org.apache.maven.plugins:maven-clean-plugin:pom:2.5 从/到中央(https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到所请求目标的有效证书路径 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) 在org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:334) ......还有26个 引起:org.eclipse.aether.transfer.ArtifactTransferException:无法传输工件 org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from / to central (https://repo.maven.apache.org/maven2): sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到所请求目标的有效证书路径 在org.eclipse.aether.connector.wagon.WagonRepositoryConnector $ 6.wrap(WagonRepositoryConnector.java:1016) 在org.eclipse.aether.connector.wagon.WagonRepositoryConnector $ 6.wrap(WagonRepositoryConnector.java:1004) at org.eclipse.aether.connector.wagon.WagonRepositoryConnector $ GetTask.run(WagonRepositoryConnector.java:725) 在org.eclipse.aether.util.concurrency.RunnableErrorForwarder $ 1.run(RunnableErrorForwarder.java:67) 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615) 在java.lang.Thread.run(Thread.java:744) 引起:org.apache.maven.wagon.TransferFailedException:sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到所请求目标的有效证书路径 在org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:935) 在org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116) 在org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88) 在org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61) at org.eclipse.aether.connector.wagon.WagonRepositoryConnector $ GetTask.run(WagonRepositoryConnector.java:660) ......还有4个 引起:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到所请求目标的有效证书路径 at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884) 在sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) 在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) 在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) 在org.apache.maven.wagon.providers.http.httpclient.impl.conn.HttpClientConnectionOperator.upgrade(HttpClientConnectionOperator.java:167) 在org.apache.maven.wagon.providers.http.httpclient.impl.conn.PoolingHttpClientConnectionManager.upgrade(PoolingHttpClientConnectionManager.java:329) 在org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:392) 在org.apache.maven.wagon.providers.http.httpclient.impl.execchain.MainClientExec.execute(MainClientExec.java:218) 在org.apache.maven.wagon.providers.http.httpclient.impl.execchain.ProtocolExec.execute(ProtocolExec.java:194) 在org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RetryExec.execute(RetryExec.java:85) 在org.apache.maven.wagon.providers.http.httpclient.impl.execchain.RedirectExec.execute(RedirectExec.java:108) 在org.apache.maven.wagon.providers.http.httpclient.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186) 在org.apache.maven.wagon.providers.http.httpclient.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) 在org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.execute(AbstractHttpClientWagon.java:756) 在org.apache.maven.wagon.providers.http.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:854) ......还有8个 引起:sun.security.validator.ValidatorException:PKIX路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到所请求目标的有效证书路径 在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个 引起:sun.security.provider.certpath.SunCertPathBuilderException:无法 找到所请求目标的有效证书路径 at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:196) 在java.security.cert.CertPathBuilder.build(CertPathBuilder.java:268) at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:380) ......还有33个
答案 0 :(得分:166)
事实是您的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>
如果我的解决方案有效,请告诉我。)
学家
答案 1 :(得分:151)
上面的答案是一个很好的解决方案,但如果您想使用SSL仓库,请按照以下步骤操作:
现在打开命令提示符并键入(使用您自己的路径):
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
否则this将会发生
喜欢这样:
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的更多信息:
答案 2 :(得分:22)
您可以使用-Dmaven.wagon.http.ssl.insecure=true
选项
答案 3 :(得分:21)
我偶然发现了这个错误报告:
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全局根CA.
如果您在原始答案中完成了该过程,则可以通过运行此命令来清理我们添加的密钥(假设您没有指定其他别名):
sudo keytool -delete -alias mykey -keystore / etc / ssl / certs / java / cacerts
Maven现在可以正常工作了。
我想扩展Andy关于添加证书和指定密钥库的答案。这让我开始,并结合其他地方的信息,我能够理解问题,找到另一个(更好的?)解决方案。
Andy的回答指定了一个具有Maven证书的新密钥库。在这里,我更广泛地将根证书添加到默认的java信任库。这允许我在不指定密钥库的情况下使用mvn(和其他java东西)。
作为参考,我的操作系统是带有Maven 3.3.3的Ubuntu 15.10。
基本上,此设置中的默认java信任库不信任Maven仓库(DigiCert全局根CA)的根证书,因此需要添加它。
我在这里找到并下载了:
https://www.digicert.com/digicert-root-certificates.htm
然后我找到了默认的信任库位置,它位于此处:
的/ etc / SSL /证书/ JAVA / cacerts中
您可以通过运行此命令查看当前的证书:
keytool -list -keystore / etc / ssl / certs / java / cacerts
出现提示时,默认密钥库密码为&#34; changeit&#34; (但没人做过)。
在我的设置中,&#34; DigiCert Global Root CA&#34;不存在(DigiCert称之为&#34;指纹&#34;在上面的链接中)。所以在这里添加它:
sudo keytool -import -file DigiCertGlobalRootCA.crt -keystore 的/ etc / SSL /证书/ JAVA / cacerts中
如果你信任证书,这应该提示,说是。
再次使用keytool -list验证密钥是否存在。我没有打扰指定一个别名(-alias),所以它最终是这样的:
mykey,2015年12月2日,trustedCertEntry,证书指纹(SHA1): A8:98:5D:3A:65:E5:E5:C4:B2:D7:D6:6D:40:C6:DD:2F:B1:9C:54:36
然后我就能正常运行mvn命令,无需指定密钥库。
答案 4 :(得分:9)
您可以手动导入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
答案 5 :(得分:8)
这可能不是最好的解决方案。我将我的maven从3.3.x改为3.2.x.这个问题消失了。
答案 6 :(得分:4)
我实际上遇到了同样的问题。
当我跑
时mvn clean package
在我的maven项目中,我通过maven工具获得了此证书错误。
我跟着@Andy的答案,直到我下载了 .cer 文件
之后,其余的答案对我不起作用,但我做了以下(我在Linux Debian机器上运行)
首先,运行:
keytool -list -keystore“Java path +”/ jre / lib / security / cacerts“”
例如在我的情况下它是:
keytool -list -keystore / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / security / cacerts
如果询问密码,只需按Enter键。
该命令应该列出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密码,然后它会询问您密钥库密码
默认值为 changeit
然后说 y 您信任此证书。
如果您运行命令
keytool -list -keystore / usr / lib / jvm / jdk-8-oracle-arm32-vfp-hflt / jre / lib / security / cacerts
再一次,就我而言,我收到了 cacerts 文件的94个内容
这意味着,它已成功添加。
答案 7 :(得分:1)
当Maven尝试自动下载必要的模块时,我收到了与SSL证书相同的错误。
作为补救措施,我试图在上面实施Luke的答案,但发现DigiCert全局根CA证书已经存在于Java的可信密钥库中。
帮助我的是将%JAVA_HOME%\bin
添加到Path变量(我正在运行Windows)。 %JAVA_HOME%
是一个JDK位置,而不仅仅是一个JRE位置,因为Maven需要一个JDK
我不确定它为什么会有所帮助,但确实如此。我绝对相信这是我唯一改变的事情。
答案 8 :(得分:1)
如果 HTTPS 存储库出现此问题,请执行此操作。 https://repo.spring.io/milestone您可以尝试使用非安全替代http://repo.spring.io/milestone。 这就是它
答案 9 :(得分:1)
对我有用的东西
在<proxy>
中配置${MAVEN_HOME}/conf/settings.xml
设置:
(注意:对于其他人,它们在配置${user.home}/.m2/settings.xml
时起作用。如果user.home中没有settings.xml,只需从maven目录中的conf /复制它即可。)
<!-- 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>
然后指向pom.xml
以从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>
您可能还需要在IDE中配置http代理。对于settings.json
中的VSCode:
{
...
"http.proxy": "http://my/proxy/script/address/my-proxy.pac",
...
}
来源:
答案 10 :(得分:0)
只是稍微超出了安迪推出的内容。
如果您碰巧找到链,您需要获取最顶层(根)证书。
我花了一天时间才弄明白。
答案 11 :(得分:0)
发生这种情况是因为您的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”。
答案 12 :(得分:0)
我在SSL和Maven上也遇到了同样的问题。我公司的IT策略限制了我对计算机配置进行任何更改,因此我从另一台计算机复制了整个.m2并将其粘贴到.m2文件夹中,并且它可以正常工作。
.m2文件夹通常位于c \ user \ admin
下答案 13 :(得分:0)
答案 14 :(得分:0)
另一个原因: 如果打开Charles,您也可能会遇到此问题,在这种情况下,请退出Charles。
答案 15 :(得分:0)
一种快速的解决方案是在您的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>
从来没有避免搜索认证的地方。
答案 16 :(得分:0)
我遇到的问题是 之前,我使用安装了证书的jdk 1.8.0_31。 我切换到jdk 1.8.0_191,但未安装证书。
但是,我的项目运行良好,我意识到它们的依赖项已经下载。因此,他们只会编译和打包那些项目。 但是,这对于新的Maven项目不起作用,因为它们的依赖项没有提前下载。
解决方案::
答案 17 :(得分:0)
即使我将证书放入cacerts中,我仍然遇到错误。 轮到我们将它们放在jre中,而不是jdk / jre中。
有两个密钥库,请记住!!
答案 18 :(得分:0)
步骤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.
第2步:将整个内容(包括BEGIN CERTIFICATE和END CERTIFICATE行,在这种情况下很重要)保存为godaddyg2.pem,并通过以下方式将其导入到我的信任存储中:
步骤3:将证书导入密钥库(java受信任的密钥库)
$ keytool -importcert -file ./godaddyg2.pem -keystore $JRE_LIB/lib/security/cacerts
答案 19 :(得分:0)
在相同的情况下,我也遇到了这个问题,我在堆栈溢出问题上写下了一个detailed answer问题,解释了如何使用GUI工具更轻松地修改系统的证书。我认为这比为特定项目使用一次性密钥库或修改Maven的设置(这可能会带来麻烦)要好一些。
答案 20 :(得分:-1)
我只是使用了新的Java版本,它对我有用。