记一次证书引发的问题
前言
昨天又重拾 SpringCloud 配置中心的问题来研究,之前启动服务一直报错,关键信息
1 | sun.security.validator.ValidatorException: |
认真阅读了了一下,确认大概是认证问题,网上有看到相关的博客也遇到过这种问题,基本确定了是证书问题
分析
我的 SpringCloud 服务是要访问 github 来获取配置的,我网页访问走的是 windows 方式,而程序跑起来走的是 JAVA 的方式,证书认证是通过 jre 里面的证书来验证的,到这里,要解决这个问题我得把证书成功的安装到jre\lib\security
下的 cacerts 的证书文件里面
网上关于如何安装证书的方式说的比较多,关于证书操作如下,使用keytools
工具
1 | -- 把证书文件 maven.datastory.cer 导入 Java 证书库 cacerts 中,别名为 maven.datastory,密码是 changeit |
但是问题来了证书从哪里下载我是一头雾水,翻到https://www.playpi.org/2018082501.html这篇文章,才知道如何下载证书到本地
下载证书
- 先点击小锁标志,然后点击证书
- 接着点击详细信息,复制到文件
- 下载完毕后使用上面的命令导入即可,注意要使用管理员启动 CMD
后续
那篇文章中有说到是因为 JDK 版本过低导致无法自动更新证书,即使我们安装了证书,过一段时间证书过期之后我们还是要重新安装一次,所以后面我准备直接将 jdk 升级到了最新版
安装 OpenJDK
我是在红帽社区下载的 msi 安装包,如何安装就不赘述了,都一样
下载地址:https://developers.redhat.com/products/openjdk/download
值得注意的是
安装完毕后似乎并没有立刻生效,我配置完毕项目的 SDK 之后,启动依旧是报错,我当时认为不是 JDK 的原因,就再次安装了证书到新的 JDK 中,发现也没有生效,第三次启动却发现已经好了
为了验证到底是证书起的作用还是 JDK 起的作用,我卸载了该证书,发现依旧 OK,新版的 JDK 的确可以解决这个问题,而且是永久的!