专栏首页Java开发者之家[问题记录]-PKIX-path-building-failed问题

[问题记录]-PKIX-path-building-failed问题

# 『问题记录』PKIX path building failed问题

# 问题原因

Springboot请求外部https接口,由于ssl证书信任问题会导致PKIX path building failed问题。具体体现在请求小程序接口时,出现以上错误。

# 错误信息

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

# 解决方法

URL realUrl = null;
try {
    realUrl = new URL(url);
    if("https".equalsIgnoreCase(realUrl.getProtocol())){
        SslUtils.ignoreSsl();
    }
} catch (Exception e) {
    logger.error(e.toString());
}
ResponseEntity<String> response = restTemplate.getForEntity(String.valueOf(realUrl), String.class);

# SslUntils库

import javax.net.ssl.*;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

public class SslUtils {

    private static void trustAllHttpsCertificates() throws Exception {
        TrustManager[] trustAllCerts = new TrustManager[1];
        TrustManager tm = new miTM();
        trustAllCerts[0] = tm;
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, null);
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
    }

    static class miTM implements TrustManager,X509TrustManager {
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }

        public boolean isServerTrusted(X509Certificate[] certs) {
            return true;
        }

        public boolean isClientTrusted(X509Certificate[] certs) {
            return true;
        }

        public void checkServerTrusted(X509Certificate[] certs, String authType)
                throws CertificateException {
            return;
        }

        public void checkClientTrusted(X509Certificate[] certs, String authType)
                throws CertificateException {
            return;
        }
    }

    /**
     * 忽略HTTPS请求的SSL证书,必须在openConnection之前调用
     * @throws Exception
     */
    public static void ignoreSsl() throws Exception{
        HostnameVerifier hv = new HostnameVerifier() {
            public boolean verify(String urlHostName, SSLSession session) {
                return true;
            }
        };
        trustAllHttpsCertificates();
        HttpsURLConnection.setDefaultHostnameVerifier(hv);
    }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 解决PKIX问题:unable to find valid certification path to requested target【X509TrustManager】

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    奋飛
  • 使用java代码连接ABAP Netweaver系统

    sun.security.validator.ValidatorException: PKIX path building failed: sun.securi...

    Jerry Wang
  • 记录一次 Windows Android Studio 异常

    脑子想了半天,没遇到过这个问题呀,说的什么鬼证书的事儿。我从 Windows 切换到 Mac OS,Android Studio 倒是一直没出现过这个鬼鬼。

    HLQ_Struggle
  • 请求HTTPS接口提示缺少安全证书:unable to find valid certification path to requested target

    Question:unable to find valid certification path to requested target

    chenchenchen
  • Unrecognized SSL message, plaintext connection?

      以这个错误信息为文章标题是不是更醒目一点,这是JavaMail使用SSL的方式登录邮箱时抛出的异常。代码如: public class Jav...

    高爽
  • [808]There were errors checking the update sites: SSLHandshakeException: sun.secu解决方案

    (1)插件管理页面提示:There were errors checking the update sites:IOException:Unable to tu...

    周小董
  • 记一次因证书问题导致请求失败问题SSLHandshakeException

    转载请注明出处:https://www.cnblogs.com/funnyzpc/p/10989813.html

    上帝
  • Java错误消息sun.security.validator.ValidatorException应该如何处理

    SSL problem with host ldcigm6.wdf.sap.corp:

    Jerry Wang
  • An error occurred while collecting items to be installed...解决方法

    eclipse 为我们在开发中必不可缺的 IDE,熟悉 eclipse 的开发与应用可以让我们在项目中事半功倍。但是如果我们在使用过程中,比如使用 eclips...

    白鹿第一帅
  • cas6.2 客户端配置时候出现的问题 the trustAnchors parameter must be non-empty 和 PKIX path building failed

    cas6.2配置 基本https://blog.csdn.net/qq_40297844/article/details/106437993这个上面就有了

    全栈程序员站长
  • 第十二节 微服务https之间访问问题

    上面这个问题归结起来就是无法验证网站的证书,找不到证书验证链 针对这个问题,Java的证书验证系统与其他不同,将代理工具生成的证书作为可信根证书导入系统证书库...

    用户1418372
  • WebService系列之Axis Https(SSL)证书校验错误处理方法

    异常原因是ssl证书校验失败,因为自己网站是http的,对方公司是https的接口,所以证书校验失败,处理方法是在网上找的一个不错的方法,思路是重写一个不验证证...

    SmileNicky
  • Docker服务开放了这个端口,服务器分分钟变肉机!

    Docker为了实现集群管理,提供了远程管理的端口。Docker Daemon作为守护进程运行在后台,可以执行发送到管理端口上的Docker命令。

    macrozheng
  • 云通信产品常见的SSL相关错误及解决方法

    SSL协议在当今的网络信息传输过程中起到了不可替代的作用,使用不对称加密技术实现会话双方之间信息的安全传递,实现信息传递的保密性、完整性,并且会话双方能鉴别对方...

    孙天骄
  • 解决PKIX问题:unable to find valid certification path to requested target

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。

    奋飛
  • Http接口调用示例教程

    本文链接:https://blog.csdn.net/u014427391/article/details/97398717

    SmileNicky
  • 问题记录

    测试反馈的是,拍摄了一张图片,上传之后,安卓可以加载出来,iOS显示是黑色,其他图片正常;

    莫空9081
  • Shiro框架学习,Shiro单点登录的支持

    Shiro 1.2开始提供了Jasig CAS单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的...

    用户1289394
  • Confluence 6 导入 SSL 证书和问题解决

    https://www.cwiki.us/display/CONF6ZH/Connecting+to+LDAP+or+Jira+applications+or+...

    HoneyMoose

扫码关注云+社区

领取腾讯云代金券