文章目录
一、异常内容1.错误解析:2.常见原因: 二、解决步骤最近生成自签证书遇到异常!
一、异常内容
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targe
这个错误信息通常是由于 Java 客户端在建立 SSL 连接时无法验证服务器的 SSL 证书,导致握手失败。具体来说,它是因为找不到有效的证书链路径。常见的原因和解决方法如下:
1.错误解析:
SSLHandshakeException:发生在 SSL 握手过程中,通常表示安全协议问题。
ValidatorException:证书验证失败,通常是由于证书链不完整或信任存储中没有正确的证书。
PKIX path building failed:PKIX(Public Key Infrastructure)路径构建失败,意味着 Java 客户端无法验证服务器的证书。
unable to find valid certification path to requested target:无法找到有效的证书路径,通常是因为缺少根证书或中间证书。
2.常见原因:
服务器使用的是自签名证书:如果服务器使用的是自签名证书,客户端的信任存储中通常没有该证书的根证书。
证书链不完整:服务器可能没有提供完整的证书链(例如缺少中间证书),导致客户端无法验证证书。
Java keystore 中缺少相应的证书:如果你连接的服务器使用的是一个不被默认信任的证书(例如私有 CA 签发的证书),则需要将其导入到 Java 的 cacerts 信任库中。
二、解决步骤
检查并导入证书到 Java 的信任库(cacerts)
获取服务器的证书:可以使用浏览器或者 openssl 获取服务器的证书。比如,使用以下命令:
openssl s_client -connect <server_address>:443 -showcerts
将证书导入 Java 的信任库:
keytool -import -alias httpfs -keystore cacerts -file /usr/middleware/java/jdk1.8.0_401/jre/lib/security/server.crt
默认的证书库密码是:
changeit
检查证书是否已经导入
keytool -list -keystore cacerts -alias httpfs
另外删除证书命令
keytool -delete -alias httpfs -keystore /usr/middleware/java/jdk1.8.0_401/jre/lib/security/cacerts