HTTP请求三方接口绕过https证书检查

news2024/11/20 13:43:32

问题:在http请求https接口过程中经常会遇到SSL证书检查或者证书过期

** sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: validity check failed **
在这里插入图片描述

解决办法:绕过证书检查

代码如下:


public static byte[] getFile(String url) throws  Exception {
        log.info("get file url:"+url);
        try {
            /*HttpClientBuilder builder = HttpClients.custom();
            builder.setSSLHostnameVerifier((hostName, sslSession) -> {
                return true; // 证书校验通过
            });*/
            //CloseableHttpClient httpclient = builder.build();
            //CloseableHttpClient httpclient =  createSSLClientDefault();
            DefaultHttpClient httpclient = new DefaultHttpClient();
            enableSSL(httpclient);
            HttpGet request = new HttpGet(url);
            CloseableHttpResponse response = httpclient.execute(request);
            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == HttpStatus.SC_OK) {
                HttpEntity entity = response.getEntity();
                if(entity == null) return null;
                byte[] imgByte = EntityUtils.toByteArray(entity);
                return imgByte;
            }

        }catch (Exception ex){
            log.error("get file error:"+ex.getMessage());
            ex.printStackTrace();
            throw ex;
        }
        return null;
    }
    /**
     * 访问https的网站
     * @param httpclient
     */
    private static void enableSSL(DefaultHttpClient httpclient){
        //调用ssl
        try {
            SSLContext sslcontext = SSLContext.getInstance("TLS");
            sslcontext.init(null, new TrustManager[] { truseAllManager }, null);
            SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
            sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
            Scheme https = new Scheme("https", sf, 443);
            httpclient.getConnectionManager().getSchemeRegistry().register(https);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    /**
     * 重写验证方法,取消检测ssl
     */
    private static TrustManager truseAllManager = new X509TrustManager(){

        public void checkClientTrusted(
                java.security.cert.X509Certificate[] arg0, String arg1)
                throws CertificateException {
            // TODO Auto-generated method stub

        }

        public void checkServerTrusted(
                java.security.cert.X509Certificate[] arg0, String arg1)
                throws CertificateException {
            // TODO Auto-generated method stub

        }

        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            // TODO Auto-generated method stub
            return null;
        }

    };
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1657096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue--》从零开始打造交互体验一流的电商平台(一)

今天开始使用 vue3 ts 搭建一个电商项目平台,因为文章会将项目的每处代码的书写都会讲解到,所以本项目会分成好几篇文章进行讲解,我会在最后一篇文章中会将项目代码开源到我的github上,大家可以自行去进行下载运行,希…

了解tensorflow.js

1、浏览器中进行机器学习的优势 浏览器中进行机器学习,相对比与服务器端来讲,将拥有以下四大优势: 不需要安装软件或驱动(打开浏览器即可使用);可以通过浏览器进行更加方便的人机交互;可以通过…

#内部类#

1,概念 如果一个类定义在另一个类的内部,这个内部类就叫做内部类。内部类是一个独立的类,它不属于外 部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。重点:内部类是一个独立的类 注意&…

分位数回归的基本原理和特点

基本模型及解释 分位数回归经典模型是由Koenker和Bassett (1978b)引入的,它从位置模型中的普通分位数(也称为“百分位数”)的概念扩展到更一般的一类线性模型,其中条件分位数具有线性形式。为了简单地回忆一下普通分位数,考虑一个实数随机变…

【通信】为什么用复形式表示信号

引入: 一个实例反映复信号和实信号对应关系(幅度与相位) 复信号的意义 在实际工程中,没有数学意义上的复数信号。再信号与系统中引入复数是为了: ①简化公式,特别是三角函数 ②复数的实部和虚部实际上代…

TCP 连接,一端断电和进程崩溃有什么区别?

TCP 连接,一端断电和进程崩溃有什么区别? 前言主机崩溃进程崩溃有数据传输的场景客户端主机宕机,又迅速重启客户端主机宕机,一直没有重启 总结 前言 有的小伙伴在面试腾讯的时候,遇到了这么个问题: 这个属…

云手机:海外舆情监控的新工具

在数字化时代,海外舆情监控对于企业、品牌和政府机构来说,已经变得至关重要。传统的舆情监控方法往往受限于地域、设备和技术,而云手机的出现,为海外舆情监控带来了全新的解决方案。 一、云手机与海外舆情监控的完美结合 云手机作…

RisingWave基本操作

什么是RisingWave RisingWave 是一款基于 Apache 2.0 协议开源的分布式流数据库。RisingWave 让用户使用操作传统数据库的方式来处理流数据。通过创建实时物化视图,RisingWave 可以让用户轻松编写流计算逻辑,并通过访问物化视图来对流计算结果进行及时、…

银行卡OCR识别接口快速对接

银行卡OCR识别接口又叫银行卡卡面信息识别接口、银行卡文字信息识别API接口,指的是传入银行卡照片,精准识别静态银行卡图像上的文字信息,包括银行卡号、卡类型、银行名称等。那么银行卡OCR识别接口如何快速对接呢? 首先我们找到一…

【新版系统架构】知识点背诵默写本

前言 系统架构考试在即,想要考试的人肯定感受到了沉甸甸的压力和紧迫感,脑海中不断闪过知识点的画面,却让人有些头昏脑胀,发现很难完全记住,这个考试很难,知识点很多。这次我在准备考试的同时,…

VBA技术资料MF152:列出工作表中所有单元格的注释

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

最全网络安全学习路线!涵盖所有知识点,看这一篇掌握网安技能!

目录 零基础小白,到就业!入门到入土的网安学习路线! 建议的学习顺序: 一、夯实一下基础,梳理和复习 二、HTML与JAVASCRIPT(了解一下语法即可,要求不高) 三、PHP入门 四、MYSQL…

【备战软考(嵌入式系统设计师)】10 - 软件工程基础

这一部分的内容是概念比较多,不要理解,去感受。 涉及的知识点是嵌入式系统开发和维护的部分,也就是和管理相关的,而不是具体如何进行嵌入式系统开发的细节。 系统开发生命周期 按照顺序有下面几个阶段,我们主要要记…

【双曲几何-05 庞加莱模型】庞加来上半平面模型的几何属性

文章目录 一、说明二、双曲几何的上半平面模型三、距离问题四、弧长微分五、面积问题六、python实现 一、说明 我们知道,双曲几何的著名模型有四种:微分解析模型、庞加莱盘、庞加莱半平面、克莱因盘。庞加莱圆盘模型是表示双曲几何的一种方法&#xff0c…

全网最详细教学如何部署JVS-无忧企业文档

无忧企业文档项目直达地址 项目的简单介绍 JVS是面向软件开发团队可以快速实现应用的基础开发框架,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容…

兄弟DCP-7057激光打印机报错误代码EC检修及分析

故障描述: 兄弟DCP-7057激光打印机屏幕显示无法打印EC关闭电源,然后重新打开打印机。 故障检修及分析: 1、定影单元风扇的插线连接不良 检查定影单元风扇的插线连接并重新连接; 2、定影单元风扇故障 更换定影单元风扇&#xff1b…

宏集Panorama SCADA软件获BACnet BTL认证

Panorama 获得BACnet BTL认证 建筑物的组件(空调系统、照明传感器等)能否使用共同通讯协议?这正是标准化 BACnet协议(Building Automation and Control Networks)所提供的功能。该协议旨在实现建筑物中各种设备和系统…

JavaEE 多线程详细讲解(2)

1.线程不安全分析 (1)线程不安全的主要原因就是,系统的抢占式执行,对于内核设计者来说,这是非常方便的一个执行方式,但是这却却导致线程不安全的问题,也有不抢占执行的系统,但是这种…

OpenHarmony实战开发——WLAN驱动框架介绍及适配方法

1. WLAN 驱动框架概述 WLAN 是基于 HDF(Hardware Driver Foundation)驱动框架开发的模块,该模块可实现跨操作系统迁移、自适应器件差异、模块化拼装编译等功能。从而降低 WLAN 驱动开发的难度,减少 WLAN 驱动移植和开发的工作量。 本文主要分析 WLAN 驱…

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析

SpringBoot 扩展篇:ConfigFileApplicationListener源码解析 1.概述2. ConfigFileApplicationListener定义3. ConfigFileApplicationListener回调链路3.1 SpringApplication#run3.2 SpringApplication#prepareEnvironment3.3 配置environment 4. 环境准备事件 Config…