tags: [jdk]
categories: [ 问题排查]


前言

昨天又重拾SpringCloud配置中心的问题来研究,之前启动服务一直报错,关键信息

  1. sun.security.validator.ValidatorException:
  2. PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
  3. unable to find valid certification path to requested target

认真阅读了了一下,确认大概是认证问题,网上有看到相关的博客也遇到过这种问题,基本确定了是证书问题

分析

我的SpringCloud服务是要访问github来获取配置的,我网页访问走的是windows方式,而程序跑起来走的是JAVA的方式,证书认证是通过jre里面的证书来验证的,到这里,要解决这个问题我得把证书成功的安装到jre\lib\security下的cacerts的证书文件里面

网上关于如何安装证书的方式说的比较多,关于证书操作如下,使用keytools工具

  1. -- 把证书文件 maven.datastory.cer 导入 Java 证书库 cacerts 中,别名为 maven.datastory,密码是 changeit
  2. keytool -import -alias githubstory -keystore cacerts -file github.zoombar.cer -trustcacerts -storepass changeit
  3. -- 在证书库中查看指定别名的证书信息,需要输入密码
  4. keytool -list -keystore cacerts -alias githubstory
  5. -- 删除证书库中指定别名的证书
  6. keytool -delete -keystore cacerts -alias githubstory

但是问题来了证书从哪里下载我是一头雾水,翻到https://www.playpi.org/2018082501.html这篇文章,才知道如何下载证书到本地

下载证书

  1. 先点击小锁标志,然后点击证书

image.png

  1. 接着点击详细信息,复制到文件

image.png

  1. 下载完毕后使用上面的命令导入即可,注意要使用管理员启动CMD

后续

那篇文章中有说到是因为JDK版本过低导致无法自动更新证书,即使我们安装了证书,过一段时间证书过期之后我们还是要重新安装一次,所以后面我准备直接将jdk升级到了最新版

安装OpenJDK

我是在红帽社区下载的msi安装包,如何安装就不赘述了,都一样
下载地址:https://developers.redhat.com/products/openjdk/download

值得注意的是

安装完毕后似乎并没有立刻生效,我配置完毕项目的SDK之后,启动依旧是报错,我当时认为不是JDK的原因,就再次安装了证书到新的JDK中,发现也没有生效,第三次启动却发现已经好了
为了验证到底是证书起的作用还是JDK起的作用,我卸载了该证书,发现依旧OK,新版的JDK的确可以解决这个问题,而且是永久的!

相关