解决PKIX:unable to find valid certification path to requested target 的问题

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.csdn.net/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

重启服务器即可。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用和[2],当在进行HTTPS请求时,如果服务器的证书无法通过Java的信任库验证,就会出现"PKIX: unable to find valid certification path to requested target"的错误。这个错误通常发生在以下情况下: 1. 服务器的证书是自签名的或使用未知的证书颁发机构签名的。 2. 信任库中缺少服务器证书的根证书或中间证书。 3. 信任库中的证书已过期或被撤销。 根据引用,在Java中,这个错误会由SunCertPathBuilderException引发。这个异常表示无法构建一个有效的证书路径来验证服务器的证书。 因此,当HttpRequest报"PKIX: unable to find valid certification path to requested target"错误时,通常是由于服务器证书无法在Java的信任库中找到或验证的原因导致的。解决这个问题的方法有以下几种: 1. 添加服务器证书到Java的信任库中:可以使用keytool命令将服务器证书导入到Java信任库中。首先,获取服务器证书,然后使用keytool命令将该证书导入到Java信任库中。具体步骤如下: - 获取服务器证书:可以使用浏览器访问服务器的HTTPS站点并导出证书。 - 使用keytool命令将证书导入到Java信任库中:运行以下命令,将路径替换为你的证书路径和别名替换为你喜欢的别名。 ``` keytool -import -alias <alias> -file <path_to_certificate> -keystore <path_to_keystore> ``` - 确保keytool命令使用的是正确的Java信任库,默认情况下,Java信任库位于$JAVA_HOME/lib/security/cacerts。 2. 使用自定义信任管理器:可以编写自定义的X509TrustManager来验证服务器证书。首先,创建一个实现X509TrustManager接口的类,然后在该类中实现验证逻辑。最后,将该自定义信任管理器设置为HttpClient或HttpURLConnection的信任管理器。这样就可以绕过Java信任库的验证,但需要注意安全风险。 3. 禁用证书验证:虽然不推荐,但可以通过禁用证书验证来解决问题。这个方法会使请求不再验证服务器的证书,但会增加安全风险。具体实现方法因使用的HTTP库而异。 总之,"PKIX: unable to find valid certification path to requested target"错误通常是由于服务器证书无法在Java的信任库中找到或验证的原因导致的。可以通过将服务器证书导入到Java信任库中、使用自定义信任管理器或禁用证书验证来解决这个问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值