Https java信任_java访问非经过信任证书https的方法
由于项目需要,需要调用第三方的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的方法相关推荐
- odbc java 驱动程序_Java访问数据库程序,提示[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序错误...
packageSimilarCal;importjava.sql.DriverManager;importjava.sql.Connection;//importjava.sql.*;publiccl ...
- mongodb的java驱动_Java访问MongoDB:安装驱动
引用 原帖收藏于IT老兵驿站. 前言 Spring项目中可能需要用到MongoDB,要了解一下Java项目如何连接MongoDB,查了查google,对比了一下,发现官网的讲解非常清楚,这样的话,直接 ...
- java 大写金额_java实现整数转化为中文大写金额的方法
这篇文章主要介绍了java实现整数转化为中文大写金额的方法,感兴趣的小伙伴们可以参考一下 在日常生活中,我们经常会将阿拉伯数字转化为中文大写的情况:"零", "壹&quo ...
- 智安网络详解:零信任网络访问 (ZTNA)原理
传统的基于边界的网络保护将普通用户和特权用户.不安全连接和安全连接,以及外部和内部基础设施部分结合在一起,创建了一个可信区域的假象,很多潜在的安全问题无法解决,越来越多的企业开始转向零信任网络访问来解 ...
- 类中的静态成员函数访问非静态成员变量
http://blog.csdn.net/u011857683/article/details/52294353 1.思路: 静态成员函数属于类(通过类访问,调用函数时没有提供this指针), 非静态 ...
- java静态变量、静态方法、代码块、main方法
文章目录 一.类变量 / 静态变量(static) 二.类方法 / 静态方法(static) 三.main方法 四.代码块 (一)static代码块 (二)普通代码块 五.属性初始化.代码块.构造器的 ...
- 阿里云云盾证书(HTTPS 证书) 的免费续费操作流程
文章目录 阿里云云盾证书(HTTPS 证书) 的免费续费操作流程 1.登录到SSL 证书控制台 2.点击到期新购 3.点击新购 4.选择免费证书购买 5.补全证书信息 6.如何添加HTTPS的 TXT ...
- Java爬虫https网页内容报错SSLHandshakeException信任(忽略)所有SSL证书
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building f ...
- RSA创新沙盒盘点|BastionZero——零信任基础设施访问服务
RSAConference2022将于旧金山时间6月6日召开.大会的Innovation Sandbox(沙盒)大赛作为"安全圈的奥斯卡",每年都备受瞩目,成为全球网络安全行业技术 ...
最新文章
- Java核心技术卷I基础知识3.6.6 码点与代码单元
- 【HTTP协议】HTTP状态码列表大全
- 手把手教你DIY最便宜的 arduino 温湿度计,详细图文视频教程
- 小学奥数 7654 等差数列末项计算 python
- llinux c 语言延时,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写
- VxWorks程序一下载就停住了
- Javascript第五章改变CSS样式节点两种方法,制作导航背景切换效果第十课
- wpf silverlight的Behavior
- Visio绘图怎么对齐连接点
- mybatis_plus条件构造器
- 第三次作业(尤心心)
- Windows Server 2019/2022域控制器网络位置变为“专用网络”或“公共网络”
- wireshark怎么抓包和详细图文教程
- 对校招生培养工作的建议_贵单位对我校学生培养工作有何建议
- MAC系统重置root密码
- 【无标题】2021年中式烹调师(中级)试题及解析及中式烹调师(中级)复审考试
- Win7下安装Mysql5.7.26
- 20230222作业
- python字典(6)
- Java 字符串数组定义_「string数组」string 数组怎么定义
热门文章
- roszhong指定rviz的点启动_怎样在1秒内启动 Linux
- java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码
- 直播预告 | 乘云而上:云原生数据仓库AnalyticDB
- 聊聊数仓中TPCD-DSTPC-H与查询性能的那些事儿
- 鲲鹏基础软件开发赛道openLooKeng赛题火热报名中,数十万大奖等您来收割
- 6大创新技术及2亿美元投入计划,这个活动有点料
- 突破开源Redis的内存限制,存算分离的GaussDB到底有多能“装”?
- 如何保障企业数据资产的全生命周期安全?看这篇就够了
- 容器、Docker、虚拟机,别再傻傻分不清
- TCGA肿瘤基因数据的访问(二)