java 报 unable to find valid certification path to requested target

刚用到WebClient来进行请求网站信息,网站协议是https的,导致报unable to find valid certification path to requested target,排查后确定需要网站的证书。步骤如下:

    ​1、下载你需要的网站证书,我这是Google Chrome,点击网站地址的 小锁图标,然后点击证书

    ​    ​FG`~`W{8MY%UFIE)SQX8N0H.png

 

    ​2、根据向导 保存证书到 $JAVA_HOME/jre/lib/security目录下,我的是

    ​    ​D:\Java\jdk1.8.0_51\jre\lib\security,如图,红框是生成的证书

    ​    ​`TB3DBJVXX%7BNAPJF1HD{A.png

 

    ​    ​3、在当前目录下打开命令提示符窗口,执行 keytool -import -alias serverpublickey -file 你的证书.cer -keystore jssecacerts 然后回车,需要输入 2次口令 默认是 changeit ,之后 出现

R`(`1P@{Y3VC90YC~P`TN`2.png

会问你是否信任此证书, 摁 y 回车,此证书就会添加到秘钥库。解决报错

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java打包过程中出现"unable to find valid certification path to requested target"错误时,通常是由于SSL证书信任问题导致的。这个错误一般发生在使用HTTPS协议与远程服务器进行通信时。 解决这个问题的方法有两种: 方法一:信任证书 1. 下载远程服务器的SSL证书。 2. 将SSL证书添加到Java的信任列表中。 - 在命令行中执行以下命令:`keytool -import -trustcacerts -file <path to certificate> -alias <alias> -keystore <path to cacerts>` - 具体路径可以根据你的操作系统和Java安装位置自行确定。 - 根据提示输入Java的默认密码(一般是"changeit")。 - 确认是否信任该证书。 3. 重新运行打包操作,应该不再出现证书错误。 方法二:忽略证书验证 1. 打开Java代码,找到与远程服务器通信相关的代码。 2. 在与远程服务器建立连接的代码之前,添加以下代码: ```java // 创建一个信任所有证书的TrustManager TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager(){ public java.security.cert.X509Certificate[] getAcceptedIssuers(){ return null; } public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType){} public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType){} } }; // 忽略对证书的验证 try{ SSLContext sc = SSLContext.getInstance("TLS"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception e){ // 异常处理 } ``` 3. 重新运行打包操作,应该不再出现证书错误。 需要注意的是,忽略证书验证可能会降低安全性,因此在生产环境中不建议使用。推荐的做法是信任证书,确保与远程服务器的连接是安全和可靠的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值