websocket客户端使用带SSL证书验证连接服务端的时候,出现证书问题,完整报错信息如下:
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 target
问题的根本是:
缺少安全证书时出现的异常。
解决问题方法:
导入安全认证证书到客户端即可。
方法一:http://blog.youkuaiyun.com/faye0412/article/details/6883879
方法二:
(1)下载安全证书,放到指定目录下,如 D:\ssl
(2)运行cmd,避免权限问题,以管理员身份运的cmd;
(3)将证书导入java的cacerts证书库
1.切换到目录 ${JAVA_HOME}/jre/lib/security下,执行如下命令:
keytool -import -alias vbooking -keystore cacerts -file D:\ssl\server.crt
其中:
-alias 指定别名(推荐和证书同名)
-keystore 指定存储文件(此处固定)
-file 指定证书文件全路径(证书文件所在的目录)
库密钥口令输入:changeit
将会看到如下的信息
是否信任:Y
证书导入成功
查看证书,密钥仍然是changeit
keytool -list -keystore cacerts -alias vbooking
重启服务器即可。