由于项目需要,需要调用第三方的API接口,为了简单方便与快速开发,便采用了httpClient来进行调用。

org.apache.httpcomponents

httpclient

4.5.6

但在第三方的一个HTTPS的接口时,IDE中报了如下错误。

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

解决办法:

将httpClient中关于证书认证的实现机制注释掉,即不对任何https的证书进行校验。代码如下:

import org.apache.http.config.Registry;

import org.apache.http.config.RegistryBuilder;

import org.apache.http.conn.socket.ConnectionSocketFactory;

import org.apache.http.conn.socket.PlainConnectionSocketFactory;

import org.apache.http.conn.ssl.NoopHostnameVerifier;

import org.apache.http.conn.ssl.SSLConnectionSocketFactory;

import org.apache.http.impl.client.CloseableHttpClient;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

import javax.net.ssl.SSLContext;

import javax.net.ssl.TrustManager;

import javax.net.ssl.X509TrustManager;

import java.security.KeyManagementException;

import java.security.NoSuchAlgorithmException;

import java.security.cert.X509Certificate;

/**

* 信任https证书

*

* @author puhaiyang

* @date 2018/11/14

*/

public class SslUtil {

public static CloseableHttpClient SslHttpClientBuild() {

Registry socketFactoryRegistry = RegistryBuilder.create()

.register("http", PlainConnectionSocketFactory.INSTANCE)

.register("https", trustAllHttpsCertificates())

.build();

//创建ConnectionManager,添加Connection配置信息

PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(socketFactoryRegistry);

CloseableHttpClient httpClient = HttpClients.custom().setConnectionManager(connectionManager).build();

return httpClient;

}

/**

* 信任所有证书

*/

private static SSLConnectionSocketFactory trustAllHttpsCertificates() {

SSLConnectionSocketFactory socketFactory = null;

TrustManager[] trustAllCerts = new TrustManager[1];

TrustManager tm = new miTM();

trustAllCerts[0] = tm;

SSLContext sc = null;

try {

sc = SSLContext.getInstance("TLS");//sc = SSLContext.getInstance("TLS")

sc.init(null, trustAllCerts, null);

socketFactory = new SSLConnectionSocketFactory(sc, NoopHostnameVerifier.INSTANCE);

//HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (KeyManagementException e) {

e.printStackTrace();

}

return socketFactory;

}

static class miTM implements TrustManager, X509TrustManager {

public X509Certificate[] getAcceptedIssuers() {

return null;

}

public void checkServerTrusted(X509Certificate[] certs, String authType) {

//don't check

}

public void checkClientTrusted(X509Certificate[] certs, String authType) {

//don't check

}

}

}

然后将以前的httpClient生成的代码用上写刚刚写的这个来进行生成就可以了!

// 创建httpClient对象

// CloseableHttpClient httpClient = HttpClients.createDefault();

CloseableHttpClient httpClient = SslUtil.SslHttpClientBuild();

Https java信任_java访问非经过信任证书https的方法相关推荐

  1. odbc java 驱动程序_Java访问数据库程序,提示[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序错误...

    packageSimilarCal;importjava.sql.DriverManager;importjava.sql.Connection;//importjava.sql.*;publiccl ...

  2. mongodb的java驱动_Java访问MongoDB:安装驱动

    引用 原帖收藏于IT老兵驿站. 前言 Spring项目中可能需要用到MongoDB,要了解一下Java项目如何连接MongoDB,查了查google,对比了一下,发现官网的讲解非常清楚,这样的话,直接 ...

  3. java 大写金额_java实现整数转化为中文大写金额的方法

    这篇文章主要介绍了java实现整数转化为中文大写金额的方法,感兴趣的小伙伴们可以参考一下 在日常生活中,我们经常会将阿拉伯数字转化为中文大写的情况:"零", "壹&quo ...

  4. 智安网络详解:零信任网络访问 (ZTNA)原理

    传统的基于边界的网络保护将普通用户和特权用户.不安全连接和安全连接,以及外部和内部基础设施部分结合在一起,创建了一个可信区域的假象,很多潜在的安全问题无法解决,越来越多的企业开始转向零信任网络访问来解 ...

  5. 类中的静态成员函数访问非静态成员变量

    http://blog.csdn.net/u011857683/article/details/52294353 1.思路: 静态成员函数属于类(通过类访问,调用函数时没有提供this指针), 非静态 ...

  6. java静态变量、静态方法、代码块、main方法

    文章目录 一.类变量 / 静态变量(static) 二.类方法 / 静态方法(static) 三.main方法 四.代码块 (一)static代码块 (二)普通代码块 五.属性初始化.代码块.构造器的 ...

  7. 阿里云云盾证书(HTTPS 证书) 的免费续费操作流程

    文章目录 阿里云云盾证书(HTTPS 证书) 的免费续费操作流程 1.登录到SSL 证书控制台 2.点击到期新购 3.点击新购 4.选择免费证书购买 5.补全证书信息 6.如何添加HTTPS的 TXT ...

  8. Java爬虫https网页内容报错SSLHandshakeException信任(忽略)所有SSL证书

    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building f ...

  9. RSA创新沙盒盘点|BastionZero——零信任基础设施访问服务

    RSAConference2022将于旧金山时间6月6日召开.大会的Innovation Sandbox(沙盒)大赛作为"安全圈的奥斯卡",每年都备受瞩目,成为全球网络安全行业技术 ...

最新文章

  1. Java核心技术卷I基础知识3.6.6 码点与代码单元
  2. 【HTTP协议】HTTP状态码列表大全
  3. 手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程
  4. 小学奥数 7654 等差数列末项计算 python
  5. llinux c 语言延时,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写
  6. VxWorks程序一下载就停住了
  7. Javascript第五章改变CSS样式节点两种方法,制作导航背景切换效果第十课
  8. wpf silverlight的Behavior
  9. Visio绘图怎么对齐连接点
  10. mybatis_plus条件构造器
  11. 第三次作业(尤心心)
  12. Windows Server 2019/2022域控制器网络位置变为“专用网络”或“公共网络”
  13. wireshark怎么抓包和详细图文教程
  14. 对校招生培养工作的建议_贵单位对我校学生培养工作有何建议
  15. MAC系统重置root密码
  16. 【无标题】2021年中式烹调师(中级)试题及解析及中式烹调师(中级)复审考试
  17. Win7下安装Mysql5.7.26
  18. 20230222作业
  19. python字典(6)
  20. Java 字符串数组定义_「string数组」string 数组怎么定义

热门文章

  1. roszhong指定rviz的点启动_怎样在1秒内启动 Linux
  2. java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码
  3. 直播预告 | 乘云而上:云原生数据仓库AnalyticDB
  4. 聊聊数仓中TPCD-DSTPC-H与查询性能的那些事儿
  5. 鲲鹏基础软件开发赛道openLooKeng赛题火热报名中,数十万大奖等您来收割
  6. 6大创新技术及2亿美元投入计划,这个活动有点料
  7. 突破开源Redis的内存限制,存算分离的GaussDB到底有多能“装”?
  8. 如何保障企业数据资产的全生命周期安全?看这篇就够了
  9. 容器、Docker、虚拟机,别再傻傻分不清
  10. TCGA肿瘤基因数据的访问(二)