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

最近有两个非常让我头痛的BUG。。。。。一块心病终于解决了。。。。。

错误一:PKIX:unable to find valid certification path to requested target

原因:自己之前利用maven创建项目一直都行,可是突然有一天,不行了,自己试了跟多的方法,都不起作用,

自己百度了不知道多少天,终于被我解决了(问老师的),最后问老师,老师给了我一个解决方法,(还是老师厉害,没几分钟九给我一个解决方法),我尝试了一下,结果居然可以用了,原因是Java不会访问没有证书的网站,所以需要加入相应的证书文件吧。具体操作如下:

再你的某一个盘中新建一个文件夹,再文件夹中再建立一个InstallCert.java文件,文件内容如下:

/*
 * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 *   - Redistributions of source code must retain the above copyright
 *     notice, this list of conditions and the following disclaimer.
 *
 *   - Redistributions in binary form must reproduce the above copyright
 *     notice, this list of conditions and the following disclaimer in the
 *     documentation and/or other materials provided with the distribution.
 *
 *   - Neither the name of Sun Microsystems nor the names of its
 *     contributors may be used to endorse or promote products derived
 *     from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE O
根据引用和[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、付费专栏及课程。

余额充值