HttpClient请求出现PKIX path building failed错误

问题描述:

javaWeb项目在本地正常运行,拿到同事电脑上也正常运行。但是打包放到服务器发现失败,报的错误大致如下:

PKIX path building failed:sun.security.provider.certpath.SunCertPathBuilderException:ubable to find valid certification path to requested target ...

跟踪了下代码,发现抛这个异常的地方是代码中一处通过httpClient进行网络请求的地方,请求的URL是https类型的。但是比较怪的是在本机以及同事的电脑上都能正常,为何到服务器上不行了?

最初怀疑是不是服务器上的网络限制了Tomcat应用发起网络请求,但是经过核查,发现并没有。后来发现本地的jdk以及同事的jdk版本都是1.7,但是服务器上的jdk版本是1.8。后来又看到有人说应该是jdk对证书不信任,所以失败。

解决方法

有两种解决方法

一、一种是代码一劳永逸,参考这里,我没有去验证这个,不评价行不行,路过的大大可以试一试。

二、下载代码中要请求的url对应的证书,然后倒入到jdk信任中。

操作步骤:

我要访问的url前缀是:https://oapi.dingtalk.com/

1.在谷歌中输入该地址,然后点击输入栏左侧的小锁,会有证选项,点击证书,弹出的页面中,选择详细信息,如下:

2.然后点击,复制到文件,是一个到处证书的过程。

3.这一步直接选择默认即可。然后下一步是保存到本地。

这里,我们假设保存后的证书文件未 taobao.cer。

4.拷贝证书文件到 %JAVA_HOME%/jre/bin/路径下

5.打开命令行,切换到%JAVA_HOME%/jre/bin/目录下,执行如下命令:

keytool -import -v -trustcacerts -alias taobao -file taobao.cer -storepass changeit -keystore %JAVA_HOME%/jre/lib/security/cacerts

执行过程中,会提示“是否信任证书?[否]”,输入“y”即可。

导入成功后。

重新运行tomcat,再试一下,发现问题搞定了,不再报错!

导入证书参考这里。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
错误提示表明在使用httpClient时,出现PKIX路径构建失败的错误。这通常是由于SSL证书问题引起的。根据引用的信息,错误信息中提到了sun.security.validator.ValidatorException: PKIX path building failed,这意味着在验证服务器的证书时出现问题。引用提供了解决方案,即将目标网站的证书导入到jdk中。 为了解决这个问题,你可以按照以下步骤来导入证书: 1. 打开命令提示符(cmd)窗口。 2. 切换到jdk安装路径下的`jre\lib\security`目录,例如`C:\Program Files\Java\jdk1.8.0_73\jre\lib\security`。 3. 执行以下命令来导入证书: ``` keytool -import -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -file G:\ssodemo.crt -alias ssodemo ``` 其中,`G:\ssodemo.crt`是要导入的证书文件路径,`ssodemo`是给证书取的别名。 这样,通过将目标网站的证书导入到jdk中,就可以解决PKIX路径构建失败的问题,从而解决httpClient报错问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [PKIX path building failed问题](https://blog.csdn.net/weixin_46505978/article/details/128281379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [编译报错PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilder](https://blog.csdn.net/bob601450868/article/details/130035742)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Java的HttpClient出现PKIX path building failed问题](https://blog.csdn.net/weixin_42376402/article/details/124337007)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值