最全解决 PKIX问题方案:sun.security.validator.ValidatorException: PKIX path building failed:
这个问题的根本原因是你安装JDK时,Java\jar 1.8.0_141\lib\ext\里面缺少了一个安全凭证jssecacerts证书文件,通过运行下面类可以生成证书,将生成的证书放在Java\jar 1.8.0_141\lib\ext\这个目录下,重启编译器就可以解决。
我只能说这个方法应该是解决大部分的问题吧,对于我电脑这种顽强的bug,需要通过两种方法的结合才可以从根本上解决这个问题,废话不多说,看我的解决步骤。
1、先检查你的jdk环境
2、新建一个java类
import java.io.*;
import java.net.URL;import java.security.*;
import java.security.cert.*;import javax.net.ssl.*;public class InstallCert {public static void main(String[] args) throws Exception {String host;int port;char[] passphrase;if ((args.length == 1) || (args.length == 2)) {String[] c = args[0].split(":");host = c[0];port = (c.length == 1) ? 443 : Integer.parseInt(c[1]);String p = (args.length == 1) ? "changeit" : args[1];passphrase = p.toCharArray();} else {System.out.println("Usage: java InstallCert <host>[:port] [passphrase]");return;}File file = new File("jssecacerts");if (file.isFile() == false) {char SEP = File.separatorChar;File dir = new File(System.getProperty("java.home") + SEP+ "lib" + SEP + "security");file = new File(dir, "jssecacerts");if (file.isFile() == false) {file = new File(dir, "cacerts");}}System.out.println("Loading KeyStore " + file + "...");InputStream in = new FileInputStream(file);KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());ks.load(in, passphrase);in.close();SSLContext context = SSLContext.getInstance("TLS");TrustManagerFactory tmf =TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());tmf.init(ks);X509TrustManager defaultTrustManager = (X509TrustManager)tmf.getTrustManagers()[0];SavingTrustManager tm = new SavingTrustManager(defaultTrustManager);context.init(null, new TrustManager[] {tm}, null);SSLSocketFactory factory = context.getSocketFactory();System.out.println("Opening connection to " + host + ":" + port + "...");SSLSocket socket = (SSLSocket)factory.createSocket(host, port);socket.setSoTimeout(10000);try {System.out.println("Starting SSL handshake...");socket.startHandshake();socket.close();System.out.println();System.out.println("No errors, certificate is already trusted");} catch (SSLException e) {System.out.println();e.printStackTrace(System.out);}X509Certificate[] chain = tm.chain;if (chain == null) {System.out.println("Could not obtain server certificate chain");return;}BufferedReader reader =new BufferedReader(new InputStreamReader(System.in));System.out.println();System.out.println("Server sent " + chain.length + " certificate(s):");System.out.println();MessageDigest sha1 = MessageDigest.getInstance("SHA1");MessageDigest md5 = MessageDigest.getInstance("MD5");for (int i = 0; i < chain.length; i++) {X509Certificate cert = chain[i];System.out.println(" " + (i + 1) + " Subject " + cert.getSubjectDN());System.out.println(" Issuer " + cert.getIssuerDN());sha1.update(cert.getEncoded());System.out.println(" sha1 " + toHexString(sha1.digest()));md5.update(cert.getEncoded());System.out.println(" md5 " + toHexString(md5.digest()));System.out.println();}System.out.println("Enter certificate to add to trusted keystore or 'q' to quit: [1]");String line = reader.readLine().trim();int k;try {k = (line.length() == 0) ? 0 : Integer.parseInt(line) - 1;} catch (NumberFormatException e) {System.out.println("KeyStore not changed");return;}X509Certificate cert = chain[k];String alias = host + "-" + (k + 1);ks.setCertificateEntry(alias, cert);OutputStream out = new FileOutputStream("jssecacerts");ks.store(out, passphrase);out.close();System.out.println();System.out.println(cert);System.out.println();System.out.println("Added certificate to keystore 'jssecacerts' using alias '"+ alias + "'");}private static final char[] HEXDIGITS = "0123456789abcdef".toCharArray();private static String toHexString(byte[] bytes) {StringBuilder sb = new StringBuilder(bytes.length * 3);for (int b : bytes) {b &= 0xff;sb.append(HEXDIGITS[b >> 4]);sb.append(HEXDIGITS[b & 15]);sb.append(' ');}return sb.toString();}private static class SavingTrustManager implements X509TrustManager {private final X509TrustManager tm;private X509Certificate[] chain;SavingTrustManager(X509TrustManager tm) {this.tm = tm;}public X509Certificate[] getAcceptedIssuers() {throw new UnsupportedOperationException();}public void checkClientTrusted(X509Certificate[] chain, String authType)throws CertificateException {throw new UnsupportedOperationException();}public void checkServerTrusted(X509Certificate[] chain, String authType)throws CertificateException {this.chain = chain;tm.checkServerTrusted(chain, authType);}}}
3、在命令进行命令编译
跳转到InstallCert .java类所在的盘符,然后运行。
我的第一个错误在这里,大多数人会在该目录下生成一个jssecacerts文件——证书信任凭证。若有生成的,直接将该文件拷贝到Java\jar 1.8.0_141\lib\ext\下,重启编译器,即可。
若和我一样报错的,可以在别人的电脑进行此步操作,然后将生成的安全证书拷贝到Java\jar 1.8.0_141\lib\ext\目录下,效果是一样的,表示本人就是通过这种方法生成的。
一般人,可能拷贝了证书后,重启编译器就生效了,然后我系统的bug又出来了,在这里遇到了第二个bug,进行第四步
4、在idea里面配置两个参数,参数值为下面代码
## 具体参数:
-Dmaven.multiModuleProjectDirectory=$MAVEN_HOME -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
直接在这个参数后面加上面的参数,用空格隔开叭
5、通过上面的步骤,基本就可以了,我的电脑是行的。
附加一个我生成的文件:
jssecacerts-网络安全文档类资源-CSDN下载
直接点击连接,免费下载即可
最全解决 PKIX问题方案:sun.security.validator.ValidatorException: PKIX path building failed:相关推荐
- PKIX问题:sun.security.validator.ValidatorException: PKIX path building failed
对新项目clean install 的时候,报错了,提示没有合法的证书,报错信息如下 [ERROR] Failed to execute goal on project springbootactiv ...
- BUG处理:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path buil
分享目的: 如果别人已经讲述了,这里只会给出相关链接 只补充解决思路. 每个人在寻找解决答案过程中,遇到的痛点难点都是不同的. 这里仅阐述我实际项目遇到问题的解决方案. BUG描述: tomcat配置 ...
- 对接服务,对方服务器更新SSL证书,服务https的get和post报错。 sun.security.validator.ValidatorException: PKIX path building
错误信息 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path build ...
- 报错:sun.security.validator.ValidatorException: PKIX path building failed
背景 本人使用itext导出pdf时,会报这个错误:sun.security.validator.ValidatorException: PKIX path building failed. 报错代码 ...
- 解决调用第三方API报sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provid
1.最近在调用第三方API遇到证书验证问题 postman调用和用RestTemplate分别报错如下: 2.经过查询资料 是https,需要安装证书,但是自定义的证书貌似得不到信任,所以报PK ...
- 在linux下tomcat报javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX
在本地windows环境Java服务器 访问https服务器没有问题,换到测试环境linux服务器访问时出现上面这个问题, 是证书出问题了,服务器不信任我们自己创建的证书,所以在代码中必须要忽略证书信 ...
- Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provid
1,导出浏览器的证书(以百度为例) 保存在本地,然后上传到服务器 2,查看服务器安装的证书 # 查看服务器安装的证书 keytool -list -keystore /usr/local/jdk1.8 ...
- Android studio解决 sun.security.validator.ValidatorException
使用adroid studio出现错误: Caused by: sun.security.validator.ValidatorException: PKIX path building failed ...
- 关于解决驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“sun.security.validator.ValidatorException:
首先 如果你是在访问一个网站,可以通过可以通过导入证书的方式解决该问题.或者跳过ssl证书验证.这些操作步骤,其他博主已经写的非常详细了.在这里不做赘述. 如果你只是单纯链接一个本地数据库,却莫名其妙 ...
最新文章
- Environ. Microbiol. | 土壤pH和温度调节农业生态系统中丰富和稀有细菌群落的构建过程...
- PHP实现归治算法,PHP排序算法系列之归并排序详解
- 【20171123】【GITC精华演讲】贝业新兄弟李济宏:如何做到企业信息化建设的加减乘除...
- Linux有关Shell中if用法笔记
- 错误集合_20220131
- 前端代码优化的基本原则
- php MySQL使用rand函数随机取记录(转)
- 佳能MP145 /140故障代码大全
- 代码检查技术Checkstyle与p3c调研
- pdf加水印方法,快速给pdf加水印
- 宇视警戒球人形检测告警配置
- 第三章 概念模型设计(一)
- 计算机网络路由器作用是什么,路由器的作用是什么? 猫和路由器的区别分析【图文】...
- 美女SEO系列六:什么是友情链接?
- 搭建Ubuntu 10.04系统(嵌入式开发)
- 计算机改变我们生活英语作文,How did computer change our live?(计算机如何改变我们的生活?初中英语作文)...
- Magento支付宝手机网站支付插件V6.0旗舰版发布,支持在微信中使用支付宝支付,订单重新支付功能!...
- latex 插图位置跑在文档最后的解决方法
- C++利用mongoose搭建web服务器
- 基于Skyline的Web程序开发整理(一)
热门文章
- 仓库无证如何处罚_无证经营怎么个处罚标准???
- 盈亏比例 php,()是指某一行业内企业的固定成本和可变成本之间的比例。A.财务报表结构B.盈亏平衡点...
- linux下wps转pdf来实现在线预览
- 计算机系统装配与集成
- 【观察】操作系统产业峰会2021:立足新起点,迈上新征程
- ADI Blackfin DSP处理器-BF533的开发详解41:图像处理专题-LinearTransform图像线性变换处理(含源码)
- 未来不带任何东西就能支付 欧洲已采用指纹支付
- 关于CloudFront的使用 小结
- js中call是什么意思
- 【CCNA证书需要什么资格?】