更换https证书,部分系统启动和交互出现此错误,证书厂商给的解释说是要手动向java环境中导入CFCA根证书,导入后恢复正常
关于Java根信任
一、根信任
证书通常采用树形结构,根证书是树的最高级证书,其私钥用于对其他证书进行签名。以三级树形结构为例,由根证书签名的证书称为中间证书,其继承根证书的可信赖性。中间证书对用户证书进行签名,其可信度依赖于根证书。
二、服务器证书验证
以单向SSL验证过程进行说明:
①客户端请求访问https资源;
②Web服务器将其证书连同中间证书提供给客户端;
③客户端验证服务器的证书有效性,涉及:有效期、吊销检测、CN与访问是否一致、根信任等。
根信任过程:
服务证书—>中间证书—>根证书—>根证书是否在本地根信任库中?
三、Java根信任库
Java根信任库位于:$ JAVA_HOME/lib/security/cacerts。
当前Java暂未将CFCA根证书添加至其根证书信任库中,CFCA正在以多种途径去完成Java入根。
四、手动导入根证书
Java支持手动导入根证书,客户端导入一次即可。
注意:请先根据环境修改以下:CFCA_EV_ROOT.cer 和 cacerts路径
Windows:
导入:
keytool -import -v -trustcacerts -alias “cfcaevroot [jdk]” -file D:\CFCA_EV_ROOT.cer -storepass changeit -keystore “C:\Program Files\Java\jdk1.8.0_181\jre\lib\security\cacerts”
查看:
keytool -list -v -alias “cfcaevroot [jdk]” -keystore “C:\Program Files\Java\jdk1.8.0_181\jre\lib\security\cacerts” -storepass changeit
删除:
keytool -delete -alias “cfcaevroot [jdk]” -keystore “C:\Program Files\Java\jdk1.8.0_181\jre\lib\security\cacerts” -storepass changeit
linux:
导入:
keytool -import -v -trustcacerts -alias “cfcaevroot [jdk]” -file /home/CFCA_EV_ROOT.cer -storepass changeit -keystore “/home/jdk1.8.0_181/jre/lib/security/cacerts”
查看:
keytool -list -v -alias “cfcaevroot [jdk]” -keystore “/home/jdk1.8.0_181/jre/lib/security/cacerts” -storepass changeit
删除:
keytool -delete -alias “cfcaevroot [jdk]” -keystore “/home/jdk1.8.0_181/jre/lib/security/cacerts” -storepass changeit
导入后如下图
输入yes,成功