javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated 解决办法

更换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,成功

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
javax.net.ssl.SSLException: Unsupported or unrecognized SSL message是一个SSL异常,它表示在进行SSL握手时收到了不支持或无法识别的SSL消息。这可能是由于以下原因导致的: 1. 协议不匹配:客户端和服务器之间的SSL协议版本不匹配。可以尝试升级或降级SSL协议版本来解决此问题。 2. 代理问题:如果在客户端和服务器之间存在代理服务器,可能会导致SSL握手失败。可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 证书问题:客户端或服务器的SSL证书可能无效或过期。可以尝试更新证书或使用有效的证书来解决此问题。 4. 密钥问题:客户端或服务器的SSL密钥可能无效或不匹配。可以尝试重新生成密钥或使用正确的密钥来解决此问题。 解决javax.net.ssl.SSLException: Unsupported or unrecognized SSL message的方法包括: 1. 检查SSL协议版本:确保客户端和服务器之间的SSL协议版本匹配。可以尝试升级或降级SSL协议版本来解决此问题。 2. 检查代理设置:如果存在代理服务器,请确保代理服务器正确配置以支持SSL。可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 更新证书:检查客户端和服务器的SSL证书是否有效且未过期。如果证书无效或过期,可以尝试更新证书来解决此问题。 4. 重新生成密钥:如果SSL密钥无效或不匹配,可以尝试重新生成密钥或使用正确的密钥来解决此问题。 范例:<<引用:检查SSL协议版本是否匹配。[^1]。引用:检查代理设置是否正确。[^2]。引用:更新SSL证书。[^3]。引用:重新生成SSL密钥。[^4]。 以下是解决javax.net.ssl.SSLException: Unsupported or unrecognized SSL message的方法: 1. 检查SSL协议版本 - 确保客户端和服务器之间的SSL协议版本匹配。 - 可以尝试升级或降级SSL协议版本来解决此问题。 2. 检查代理设置 - 如果存在代理服务器,请确保代理服务器正确配置以支持SSL。 - 可以尝试绕过代理服务器或配置代理服务器以支持SSL。 3. 更新SSL证书[^3] - 检查客户端和服务器的SSL证书是否有效且未过期。 - 如果证书无效或过期,可以尝试更新证书来解决此问题。 4. 重新生成SSL密钥[^4] - 如果SSL密钥无效或不匹配,可以尝试重新生成密钥或使用正确的密钥来解决此问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值