解决unable to find valid certification path to requested target
原因
当Java客户端请求实现https协议的服务时,出现异常:’unable to find valid certification path to requested target’,这是因为自签名证书不被Java信任导致SSL握手失败,需要把自签名服务端证书导入到Java 证书信任库keystore中。
- 接口反回Received fatal alert: protocol_version,TLS版本的问题,您这边设置的什么版本?
解决方法
将服务端证书添加到Java证书信任库中
|
|
- alias,证书别名,可以任意,不重复。
- file,需要导入服务端证书
- keystore,Java 证书库地址,不同系统和JDK环境可能不同,默认是
$JAVA_HOME/jre/lib/security/cacerts
- storepass,Java 证书库密码,默认密码为
changeit
- fix
需要做两步
- 设置系统变量 System.setProperty(“https.protocols”, “TLSv1.1,TLSv1.2”); 不要用默认的TLSv1
- 导入 Digicert的根证书,到Java证书信任库,因为这个证书在才1.7.0_101版本才加到信任库里面。
具体看 https://juejin.cn/post/7182875477223145529
证书文件 https://cacerts.digicert.com/DigiCertGlobalCAG2.crt ,或者用chrome浏览器从 https://root.cn 导出可以
如果更换ssl证书,你们还要继续手动导入,所以还是建议你们更新到较新版本。现在java7最新的是 JDK 7u351
链接
- 原文作者:Ethan
- 原文链接:https://zhangxingong.fun/post/java7-tls-ssl-reject/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。