问题描述
在Eclipse中创建Maven项目,或者使用Maven从特定的远程仓库下载jar包时 ,得到下面的错误信息:
Failure to transfer org.apache.maven.archetypes:maven-archetype-quickstart:pom:1.1 from … was cached in the local repository, resolution will not be reattempted until the update interval of … has elapsed or updates are forced. Original error: Could not transfer artifact org.apache.maven.archetypes:maven-archetype-quickstart:pom:1.1 from/to …: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
原因分析
用户配置文件settings.xml中设置了远程仓库,但是没有设置代理,导致连接远程仓库时,找不到对应的有效证书,认为是不可信站点,于是抛出这个错误信息。
解决方法
目的让JRE信任这个证书,把该远程仓库地址的证书导入到JRE的证书库中。
- 在浏览器上访问远程仓库地址,然后通过浏览器将证书导出。步骤如下:
- 按图片所示操作(这里选取csdn网站举例,使用Chrome)
- 操作上图两小步后,出现证书窗体,后续操作描述如下:
详细信息 -> 右小角:复制到文件 -> 选择 Base64编码 X.509 -> 按步骤操作即可
- 把导出的证书导入JRE证书库中。前提是确保对JRE路径下有写的权限
- 使用keytool的命令行工具,查看帮助:
C:\Program Files\Java\jdk1.8.0_201\bin>keytool -help
密钥和证书管理工具
命令:
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
- 打开cmd窗体,执行import操作命令,后面有输入密码操作,密码默认为:changeit
%JAVA_HOME%\bin\keytool -import -alias suncert -keystore %JAVA_HOME%\jre\lib\security\cacerts -file %导出证书路径%
注意:如果参数中有空格,可以用双引号括起来。
例如:
C:\Program Files\Java\jdk1.8.0_201\bin\keytool -import -alias suncert -keystore “C:\Program Files\Java\jdk1.8.0_201\jre\lib\security\cacerts” -file “C:\temp\csdn.cer”
- 补充:
删除已经加上去的证书:指定了alias名字,和哪个证书库
%JAVA_HOME%\bin\keytool -delete -alias suncert -keystore %JAVA_HOME%\jre\lib\security\cacerts
查看有哪些证书:
%JAVA_HOME%\bin\keytool -list -keystore %JAVA_HOME%\jre\lib\security\cacerts
根据alais名字查看证书:
%JAVA_HOME%\bin\keytool -list -alias <alias name> -keystore %JAVA_HOME%\jre\lib\security\cacerts
上面的步骤做完后,可以重试Maven,看是否解决。
参考资料
https://www.grim.se/guide/jre-cert
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/155846.html