idea中springboot项目,mave下载包报错Maven:sun.security.validator.ValidatorException: PKIX path building faile

完美解决Maven:sun.security.validator.ValidatorException: PKIX path building failed

文章目录


记录使用 maven 时遇到的问题。第一种方法最方便,亲测能用

 

一、maven报错

maven package 进行打包时出现了以下报错:

  Non-resolvable parent POM for com.wpbxin:springboot2-first-example:0.0.1-SNAPSHOT: Could not transfer artifact org.springframework.boot:spring-boot-starter-parent:pom:2.1.5.RELEASE from/to alimaven (https://maven.aliyun.com/nexus/content/groups/public): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target and 'parent.relativePath' points at wrong local POM @ line 10, column 13 -> [Help 2]
  • 1

截图如下:  在这里插入图片描述
再来一个一样但是比较奇葩的截图,这一次基本是处理完本次出现的问题后,笔者想回过头来重现问题然后记录下来(前后间隔3天左右),但却发现,同个打包的 maven 命令,前面还打包不成功,隔了十几秒再次运行命令,却又打包成功了(还有真可能是渣渣的网络原因!毕竟我这里用了手机的热点),一次 package 成功了然后后面的打包又基本没问题了,呃。。。
在这里插入图片描述

二、一些说明

这个是学习 SpringBoot2 时创建 HelloWorld 工程遇到的问题。先说下相关环境和系统设置:

win10 + JDK 1.8.0_111 + Apache Maven 3.3.9 + idea2019.1( +
手机共享热点,不排除可能网络问题下载慢)( + 谷歌浏览器77版本的)

笔者回过头记录这篇文章的时候试了下,默认情况下的maven中央仓库地址:https://repo.maven.apache.org/maven2
(好像比用阿里云的镜像库时顺利点,速度也感觉还行吧。)。这里贴上本地 maven 的 mirror 设置,这里设置的是国内的阿里云镜像,详情可以参考阿里云公共代理库官网相关说明:https://help.aliyun.com/document_detail/102512.html?spm=a2c40.aliyun_maven_repo.0.0.36183054oSYFKS

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <mirrorOf>central</mirrorOf>
    <!-- 阿里云公共代理库使用指南:https://help.aliyun.com/document_detail/102512.html?spm=a2c40.aliyun_maven_repo.0.0.36183054oSYFKS -->
    <!-- <url>https://maven.aliyun.com/nexus/content/groups/public</url> -->
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

三、出现问题的原因和几种解决方法

看了下报错提示,然后在网上搜了下,大致可以看出是 HTTPS 的证书安全检查问题。想想也是,现在 HTTPS 在大力推广,而 HTTPS 确实是需要双向验证的。既然遇到了,那总得处理完然后记录下吧,免得再被坑。以下就是笔者关于处理这个问题过程中的一些参考和验证。以下是4种处理方式:

忽略SSL证书检查

直接忽略掉SSL证书检查,跳过这个验证,在 maven 打包命令中加上参数 -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true

idea中的设置: settings ==> Build,Execution,Deployment ==> Build Tools ==> Maven ==> Runner 中的 VM Options ,将参数填入,截图如下:
在这里插入图片描述
Eclipse中的设置:右键项目 ==> Run As ==> Run Configurations...,在 Maven Build 那一块中的 JRE 栏位中的 VM arguments ,将参数填入,注意这里不同的参数需要换行,截图如下:
在这里插入图片描述
参考链接:使用Maven时出现jssecacerts PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilde错:https://blog.csdn.net/carrie__yang/article/details/79612385

生成证书并导入到 JRE security 中

既然用的是阿里云的镜像,那就去官网下个证书瞧一瞧。

第一步,谷歌浏览器打开网站:[https://maven.aliyun.com/mvn/view](https://maven.aliyun.com/mvn/view) ,左上角中那把小锁,也即截图的红框
在这里插入图片描述
点击“证书(有效)”,旧版的浏览器可以有 View certificate 之类的,反正记住是看证书就行。在这里插入图片描述
弹出来一个框框,点击“详细信息”
在这里插入图片描述
选择“复制到文件(C)...”,然后下一步 在这里插入图片描述
选择格式在这里插入图片描述
生成的名称,比如我这里aliyun-maven.cer,路径是 C:\cs-softwares\aliyun-maven.cer ,然后导出来:
在这里插入图片描述
完成证书导出
在这里插入图片描述
在这里插入图片描述
接下来,使用 keytool 命令导入证书,进入到 JDK 下 jre 下 lib 下的 security 目录,比如我的是 C:\cs-softwares\Java\jdk1.8.0_111\jre\lib\security,然后运行命令:

keytool -import -alias aliyun-maven -keystore cacerts -file C:\cs-softwares\aliyun-maven.cer ,如下,证书指纹(证书密钥):changeit
  • 1

-alias :表示指定证书别名
-file :指定证书文件
在这里插入图片描述
输入 Y 表示确认:
在这里插入图片描述
查看证书,证书密钥同样是 changeit :

keytool -list -keystore cacerts -alias aliyun-maven
  • 1

删除证书,证书密钥同样是 changeit:

keytool -delete -alias aliyun-maven -keystore cacerts
  • 1

在这里插入图片描述
确认安装了证书之后,记得关闭这个cmd窗口,然后重启下idea或者Eclipse,再次进行 maven packge ,到这里应该是OK了。如果还是不行,报出了错误:java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty,如截图:
在这里插入图片描述
来来来,再加上参数(记得路径可以改为自己的 JDK 安装路径),把刚才的证书用上,参考:The trustAnchors Parameter Must Be Non Empty:https://www.techpaste.com/2017/03/trustanchors-parameter-must-non-empty/
,这下应该妥妥了。(后面OK了之后,也试过删除了阿里云镜像的证书,然后再打包,一样没问题,这里可以先试下直接加参数,有问题再加证书)

-Djavax.net.ssl.trustStore=C:\cs-softwares\Java\jdk1.8.0_111\jre\lib\security\cacerts
-Djavax.net.ssl.trustAnchors=C:\cs-softwares\Java\jdk1.8.0_111\jre\lib\security\cacerts
  • 1
  • 2

使用默认的 maven 中央仓库

前面提到过默认的 maven 中央仓库: https://repo.maven.apache.org/maven2,使用默认的配置就行了(本地仓库自行设置)。

PS:吐槽下,绝望之后回到了最初的起点,使用默认的配置居然没啥问题(即使用了 maven 默认的中央仓库,本来是要来重现问题的),然后回过头来想用阿里云 maven 镜像重现问题,就把阿里云中央仓库的证书也删除了,而且使用了阿里云的镜像库,也不加任何参数,这次却顺利用上了,然后把 spring-boot-starter-parent 从 2.1.0.RELEASE 到 2.1.9.RELEASE 都试了个遍,哎呦去咋情况,又都没问题了,或者是有问题的,试了第二遍或者第三遍又行了,这还真有可能是我的渣渣网络原因。。。

使用 http 的镜像库

这就是直接避开了吧,这个方法就没试过了,只是查找问题的过程中看 stackoverflow 上有提到。

四、参考链接

1、使用Maven时出现“jssecacerts PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilde”错:https://blog.csdn.net/carrie__yang/article/details/79612385

2、彻底解决unable to find valid certification path to requested target:https://blog.csdn.net/gabriel576282253/article/details/81531746

3、关于gradle Cause: unable to find valid certification path to requested target错误解决方法:https://www.chengbinbin.cn/archives/1550795296099/

4、Maven编译打包时报“PKIX path building failed”异常解决方法:https://www.iteye.com/blog/truth99-2160540

5、Problems using Maven and SSL behind proxy:https://stackoverflow.com/questions/25911623/problems-using-maven-and-ssl-behind-proxy

6、Could not transfer artifact from/to central because of InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty:https://stackoverflow.com/questions/37278306/could-not-transfer-artifact-from-to-central-because-of-invalidalgorithmparameter

7、The trustAnchors Parameter Must Be Non Empty:https://www.techpaste.com/2017/03/trustanchors-parameter-must-non-empty/

8、Could not transfer artifact (https://repo.maven.apache.org/maven2): Received fatal alert: protocol_version -> [Help 1]:https://stackoverflow.com/questions/50946420/could-not-transfer-artifact-https-repo-maven-apache-org-maven2-received-fat

sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed是一个常见的SSL证书验证错误。这个错误通常出现在使用Maven构建项目或与HTTPS相关的网络请求时。它表示SSL证书的验证过程发生了错误,导致无法验证证书的有效性。这可能是由于以下原因引起的:证书过期、证书未知、证书链缺少根证书、证书链间证书缺失或证书链无法构建成功。解决这个问题的方法主要有两种: 1. 更新证书链:可以通过更新操作系统或Java环境的证书库来解决此问题。可以从可信任的证书颁发机构获取最新的根证书,并将其添加到证书库。 2. 忽略证书验证:这种方法并不推荐使用,因为它会绕过证书验证,存在安全风险。但在某些情况下,例如在测试环境,可以临时忽略证书验证以继续进行开发和测试工作。 请注意,在处理证书验证错误时,应该先检查证书的有效性和信任性,确保安全性和可靠性。只有在确保证书的有效性的前提下,才能采取相应的解决方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path build...](https://blog.csdn.net/chaishen10000/article/details/82992291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [完美解决Maven:sun.security.validator.ValidatorException: PKIX path building failed](https://blog.csdn.net/ll837448792/article/details/105902014)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值