java访问https连接报错 unable to find valid certification path to requested target

1、报错原因

用浏览器可以正常访问,用httpclient不可以,是因为javaSSL证书校验失败,即java验证对方HTTPS证书时找不到完整的信任链。而浏览器对比java,会自动补全中间证书、使用系统的信任库、有更宽松的兼容策略。

若在开发的调试过程中,可以采用以下方法跳过验证。

复制代码
public class SSLUtil {
    public static void ignoreSSL() throws Exception {
        TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    public X509Certificate[] getAcceptedIssuers() { return null; }
                    public void checkClientTrusted(X509Certificate[] certs, String authType) {}
                    public void checkServerTrusted(X509Certificate[] certs, String authType) {}
                }
        };

        SSLContext sc = SSLContext.getInstance("TLS");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());

        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

        HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true);
    }
}

//方法调用

SSLUtil.ignoreSSL();

2、解决方法

(1) 下载证书

访问https连接,在浏览器左侧会发现安全锁的标志,点击安全锁弹出如图对话框:

点击连接安全之后,点击图中证书标志,之后导出证书到本地。

(2) 导入到java库

在cmd或者powerShell中使用以下命令导入证书,导入过程中会显示是否信任此证书,输入y后回车即可。

复制代码
keytool -import -alias XXX //文件命名
-file XXXX.crt //已下载的证书文件
-keystore "XXX\jre\lib\security\cacerts" //java的秘钥库文件
-storepass changeit //默认密码

导入成功后再次连接验证发现无报错。

相关推荐
XUEYUAN521239 分钟前
代理日志分析与监控:代理池健康状态巡检与分级告警体系搭建(运维实战)
运维·网络·网络协议·tcp/ip·算法·架构
酒神dnspup1 小时前
服务器端口检测怎么做?用 DNSPup 核对开放端口、监听服务与暴露风险
网络·网络协议·http·ssl证书·http状态码·服务器端口
酒神dnspup2 小时前
HTTP状态码检测怎么做?用 DNSPup 排查 4xx、5xx、重定向与网站可用性
网络·网络协议·http·http状态码
见山是山-见水是水2 小时前
网络请求性能优化落地指南:让原生界面在模拟器里稳定运行
网络协议·华为·性能优化·harmonyos
IPdodo_3 小时前
2026年SD-WAN 与跨境专线组合组网:3 种架构、智能选路与 SLA 验收
网络协议·sd-wan·网络架构·网络运维·企业网络·跨境网络
酒神dnspup3 小时前
SSL证书检测完整指南:用 DNSPup 排查过期、域名不匹配与 TLS 握手失败
网络·网络协议·http·ssl证书·http状态码
AlanBruce4 小时前
一键设备扫描功能详解
服务器·网络·网络协议·modbus·摩尔信使·设备扫描
深念Y4 小时前
局域网 HTTP 请求转发 502 问题排查记录
网络·网络协议·http·网络安全·代理·转发·中转
2501_916007474 小时前
免费抓包工具 Windows 和 Mac 怎么选?根据平台来选择工具
网络协议·计算机网络·网络安全·ios·adb·https·udp
一条泥憨鱼4 小时前
【从0开始学习计算机网络】| DNS 污染、劫持与 CDN:你的网页是怎么被“掉包“的
学习·计算机网络·安全·http·https·dns