首页 > 其他 > 详细

unable to find valid certification path to requested target

时间:2019-02-27 19:19:56      阅读:1841      评论:0      收藏:0      [点我收藏+]

https://blog.csdn.net/write_down/article/details/79114573

1. 知识预备
要理解本文,需要掌握以下知识:

https基本原理,包括证书分发和密钥协商等 [1];
http代理和https代理的基本原理 [2];
常用的本地http代理工具,如Fiddler, BurpSuite;
懂Java语言,了解HttpClient的基本功能和API [3]。
2. 问题描述与分析
使用httpclient写程序访问https页面,中间需要通过本地的http/https代理,如下所示:
Java程序(基于httpclient) <——-> 代理工具 (如Fiddler) <———> Web服务器
当运行Java程序后,程序出现异常,提示:

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

从错误提示可以看到是无法验证网站的证书,找不到证书验证链。为了解决问题,将代理工具生成的证书作为可信根证书导入系统证书库,但是问题依然存在。在阅读了资料之后才恍然大悟,原来Java的证书验证系统是独立于操作系统和浏览器的,而是使用JRE中证书库,所有必须把代理工具的证书加入到JRE的证书库中。

解决方案

1.先导出目标网站的证书

https://blog.csdn.net/c5113620/article/details/80384660   

https://jmeter-plugins.org/ 导出的证书是jmeter-pluginsorg.crt

2.切换到C:\Program Files\Java\jre1.8.0_151\bin目录

.\keytool.exe -import -alias JMeter -keystore ..\lib\security\cacerts -file "C:\Windows\System32\jmeter-pluginsorg.crt"

如果提示输入口令,java默认口令是changeit,最后输入y信任此证书。 

3.还是相同目录下

C:\Program Files\Java\jre1.8.0_151\bin> .\keytool.exe -list -keystore ..\lib\security\cacerts -alias JMeter
Enter keystore password:
JMeter, Feb 27, 2019, trustedCertEntry,
Certificate fingerprint (SHA1): 58:EF:9D:99:03:E7:3E:F0:19:6A:24:26:5E:6A:18:B1:B5:44:66:88

 技术分享图片

技术分享图片

 

 

技术分享图片

 

unable to find valid certification path to requested target

原文:https://www.cnblogs.com/chucklu/p/10445580.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!