Spring Boot配置时遇到javax.net.ssl.SSLHandshakeExcecepton: ..... ValidatorException: PKIX path...错误解决

3 篇文章 0 订阅
2 篇文章 0 订阅

需求

计算机网络实验需要使用Spring Boot作为后台框架。

环境

Spring-boot:2.30
IDEA:2018.12
OS:Windows 10

问题

在Spring的官网上有一个QuickStart,是一个最简单的demo。

按照第一步从https://start.spring.io/生成Spring基本框架。
因为我个人比较喜欢gradle,所以选用了gradle项目。
之后将项目导入IDEA,报错。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
尝试使用命令行直接运行,仍然报错。
在这里插入图片描述
重新从https://start.spring.io/生成maven项目报错,仍然报相同的错。

问题分析

一开始我没有留意到最后提示的SSLHandshakeException,以为又是因为外网连接不上和本来使用的阿里云镜像没有对最新的Spring-2.30提供支持导致。于是让gradle使用了华为云镜像的maven依赖库。然而问题并没有解决。在设置镜像后,查看电脑上gradle的缓存目录,发现pom已经被下载,这时又重看报错信息,才推测可能是由于pom中声明的依赖一些是https开头的网址而我不能顺利下载所致。

在网上查找相关资料,得知此类错误的原因很可能是jdk没有像windows一样配备完整的SSL证书链,而且中国地区的证书往往不被认可。具体可参考这篇文章解决Java调用Azure SDK证书错误javax.net.ssl.SSLHandshakeException,此处不再赘述。

解决方案

首先观察pom文件中所声明的需要的依赖的位置。要注意有spring-boot-dependencies-2.3.0.RELEASE.pom和spring-boot-gradle-plugins-2.3.0.RELEASE.pom两个文件。
在这里插入图片描述
其实我也不是太能理清相关的关系。总之我做了以下事情。其中第二篇博客个人感觉是真正起到了作用。

参考如何把安全证书导入到java中的cacerts证书库
该博客中的第一步从浏览器导出证书的方法依浏览器而异,读者可自行百度自己浏览器的相关方法。
我导出了jcenter和plugins-gradle两个网页的对应证书(就是最根级域名),然后按照上面的方法导入,仍然报错。

之后我参考这篇博客解决 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buildin
将之前的华为云网站mirrors.huaweicloud.com和apache网站www.apache.org分别作为程序输入执行。之后该报错消除。

结果

前面的错误消失,gradle开始正常下载和配置依赖(由于使用了华为云镜像下载的很快)。

之后出现了一个错误。
在这里插入图片描述
这是在下载依赖时遇到的未找到Class错误,但是和刚刚无法下载依赖的SSL握手错误已经没有关系了。

关于这个错误如何解决,我另外写了一篇文章创建Spring项目时java.lang.NoClassDefFoundError:org/gradle/api/internal/plugins/DefaultConvention问题解决

其他

其实在之前的项目中,我更喜欢使用阿里云的镜像,但是这一次我前期以为是阿里云没有支持最新版本的Spring导致了错误因此该用了华为云。具体可不可以用阿里云我也就不再去继续深究了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值