java的HttpClient如何去支持无证书访问https
为什么80%的码农都做不了架构师?>>>
之前做调用华为认证接口时,没有证书,使用此方法,实测可用;
调用自定义类:
if (url.startsWith("https")) {Protocol myhttps = new Protocol("https",new MySecureProtocolSocketFactory(), 8445);Protocol.registerProtocol("https", myhttps);}String responseMsg = "";// 构造HttpClient的实例HttpClient httpClient = new HttpClient();httpClient.getParams().setContentCharset("GBK");// 构造PostMethod的实例PostMethod postMethod = new PostMethod(url);
自定义类:
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate; import javax.net.SocketFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager; import org.apache.commons.httpclient.ConnectTimeoutException;
import org.apache.commons.httpclient.params.HttpConnectionParams;
import org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory; public class MySecureProtocolSocketFactory implements SecureProtocolSocketFactory { private SSLContext sslcontext = null; private SSLContext createSSLContext() { SSLContext sslcontext=null; try { sslcontext = SSLContext.getInstance("SSL"); sslcontext.init(null, new TrustManager[]{new TrustAnyTrustManager()}, new java.security.SecureRandom()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } return sslcontext; } private SSLContext getSSLContext() { if (this.sslcontext == null) { this.sslcontext = createSSLContext(); } return this.sslcontext; } public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { return getSSLContext().getSocketFactory().createSocket( socket, host, port, autoClose ); } public Socket createSocket(String host, int port) throws IOException, UnknownHostException { return getSSLContext().getSocketFactory().createSocket( host, port ); } public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException, UnknownHostException { return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort); } public Socket createSocket(String host, int port, InetAddress localAddress, int localPort, HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException { if (params == null) { throw new IllegalArgumentException("Parameters may not be null"); } int timeout = params.getConnectionTimeout(); SocketFactory socketfactory = getSSLContext().getSocketFactory(); if (timeout == 0) { return socketfactory.createSocket(host, port, localAddress, localPort); } else { Socket socket = socketfactory.createSocket(); SocketAddress localaddr = new InetSocketAddress(localAddress, localPort); SocketAddress remoteaddr = new InetSocketAddress(host, port); socket.bind(localaddr); socket.connect(remoteaddr, timeout); return socket; } } //自定义私有类 private static class TrustAnyTrustManager implements X509TrustManager { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{}; } } }
转载于:https://my.oschina.net/qiaojj/blog/1926315
java的HttpClient如何去支持无证书访问https相关推荐
- 无证书访问https外部接口
楼主公司需要调用gis服务器,但是服务器提供的https请求,同时公司也没有证书,这样会照成访问后不能直接调到接口,需要手动添加证书.所以用一下方式调用https接口可以避免上述情况. java直接访 ...
- Spring Boot RestTemplate 忽略证书访问https
在Spring Boot中,RestTemplate 一般使用 @Autowired 注解自动装配, 类似: @Autowiredprivate RestTemplate restTemplate; ...
- curl+个人证书访问https站点
目前,大公司的OA管理系统(俗称内网),安全性要求较高,通常采用https的双向 认证模式. 首先,什么是https,简单的说就是在SSL协议之上实现的http协议(get.post等操作) 什么是双 ...
- HttpClient 使用证书访问https站点
使用HttpClient访问https 站点时,如果JRE或者JDK没有导入某个站点的证书,则会报如下错误: javax.net.ssl.SSLHandshakeException: sun.secu ...
- httpsclient 自动获取证书 无证书访问 验证过能直接用
首先实现写一个 实现接口SecureProtocolSocketFactory的类. /***ClassName: bcde*date: 2015年2月26日 下午4:51:01**@author l ...
- HttpClient4.x调用指定证书访问https
代码如下: package com.lala.http;import java.io.FileInputStream; import java.io.InputStream; import java. ...
- curl 忽略证书访问 https
在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具.然而在使用cr ...
- CURL使用SSL证书访问HTTPS
在支付的交互过程中,安全绝对是需要考虑的重要因素之一.体现在对服务器交互数据的签名等环节,但有的时候为了能达到更高的安全级别,还需要用ssl证书,即web服务器有证书,浏览器客户端/请求端也需要安装证 ...
- Java 通过证书访问Https服务
前言 有些HTTP 服务要求客户端在请求的时候使用证书加密/解密/授权 (客户端证书授权).比如说下面的 curl 命令 curl --insecure \--cert cert.crt \ --ke ...
最新文章
- 小米MixPath复现之旅
- PHP深复制与浅复制
- 【我解C语言面试题系列】003 死循环格式问题小结?
- http协议报文体_HTTP协议扫盲(七)请求报文之 GET、POST-FORM 和 POST-FILE
- 把网卡指定给vm虚拟机_为VMWare虚拟网卡指定静态的MAC地址
- 远程计算机用户名,远程计算机服务
- 通过多组的HSRP实现网络的冗余和负载
- GitHub GraphQL API已正式可用
- QQ目录下各文件用途不完全揭密
- thinkpad 开启虚拟服务器,ThinkPad笔记本怎么开启处理器虚拟化技术
- 标准差σ未知_标准差σ的4种计算公式
- 旁路电容和去偶电容Bypass and Decouple
- html chm 打不开,Win7系统中出现CHM打不开的具体解决方法
- 蜂窝物联网与嵌入式SIM(eSIM)
- mysql2008连接不上_sql server连接不上怎么办 SQL Server2008R无法登录的解决方案(1814\18456)...
- 计算机组成原理——计算机系统概述
- android 联机游戏平台,游聚平台/街机平台/主机联网/街机对战平台/网络街机
- 微信多媒体文件speex格式转为mp3文件格式
- 102条简短深刻的回答,看完人生豁然开朗
- Revit内建模型的基础教学分享
热门文章
- gin框架长连接_gin框架教程一: go框架gin的基本使用
- python连通域标记_图像分析:二值图像连通域标记
- php getimagesize图片宽高反了_PHP实现简单验证码识别
- 日本搞出奇妙充电屋,坐在任意位置都能隔空充电!研究登上Nature子刊
- 不是所有图像都值16x16个词,清华与华为提出动态ViT
- 美国疫情加剧:特朗普检测虚惊一场,女儿伊万卡开始“隔离”,马云捐助百万口罩...
- 解读2019华为第001号文件:AI时代软件开发的第一要义是可信
- 这套1600赞的NLP课程已开放,面向实战,视频代码都有丨资源
- 再有人问你Java内存模型是什么,就把这篇文章发给他
- 如何使用charles对Android Https进行抓包