Https双向认证客户端请求方式

原创 2016年06月01日 12:02:44
public static String httpRequest(String requestUrl, String requestMethod, String outputStr) { 
JSONObject jsonObject = null; 
StringBuffer buffer = new StringBuffer(); 
try { 
// 创建SSLContext对象,并使用我们指定的信任管理器初始化 

TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
KeyStore trustKeyStore = KeyStore.getInstance("JKS");
trustKeyStore.load(trustFileInputStream, trustPasswd.toCharArray());
        tmf.init(trustKeyStore);

        trustFileInputStream.close();

        KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
KeyStore ks = KeyStore.getInstance("PKCS12");
ks.load(keyFileInputStream, keyPasswd.toCharArray());
kmf.init(ks, kp);

        SecureRandom rand = new SecureRandom();
SSLContext sslContext = SSLContext.getInstance("TLS");
        ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), rand);

// 从上述SSLContext对象中得到SSLSocketFactory对象 
SSLSocketFactory ssf = sslContext.getSocketFactory(); 

URL url = new URL(requestUrl); 
HttpsURLConnection httpUrlConn = (HttpsURLConnection) url.openConnection(); 
httpUrlConn.setSSLSocketFactory(ssf); 

httpUrlConn.setDoOutput(true); 
httpUrlConn.setDoInput(true); 
httpUrlConn.setUseCaches(false); 
// 设置请求方式(GET/POST) 
httpUrlConn.setRequestMethod(requestMethod); 

if ("GET".equalsIgnoreCase(requestMethod)) 
httpUrlConn.connect(); 

// 当有数据需要提交时 
if (null != outputStr) { 
OutputStream outputStream = httpUrlConn.getOutputStream(); 
// 注意编码格式,防止中文乱码 
outputStream.write(outputStr.getBytes("UTF-8")); 
outputStream.close(); 
} 

// 将返回的输入流转换成字符串 
InputStream inputStream = httpUrlConn.getInputStream(); 
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); 
BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

String str = null; 
while ((str = bufferedReader.readLine()) != null) { 
buffer.append(str); 
} 
bufferedReader.close(); 
inputStreamReader.close(); 
// 释放资源 
inputStream.close(); 
inputStream = null; 
httpUrlConn.disconnect(); 
System.out.println("返回的数据:"+buffer.toString());
// jsonObject = JSONObject.fromObject(buffer.toString()); 
} catch (ConnectException ce) { 
log.error("Weixin server connection timed out."); 
} catch (Exception e) { 
log.error("https request error:{}", e); 
} 
return buffer.toString(); 
}

Https单向认证和双向认证

HTTPS单双向认证过程

如何用Tomcat和Openssl构建HTTPS双向认证环境(HTTPS客户端认证)

 本文将介绍如何利用Tomcat的HTTPS功能,和一个自己创建的CA,来构建WEB服务器证书和个人数字证书,最终建成一个HTTPS双向认证环境(可以用于测试目的)。本文构建HTTPS双向认证的业务流...

Https单向认证和双向认证

单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),只是服务端提供了身份认证。而双向认证则是需要是服务端需要客户端提供身份认证,只能是服务端允许的客户能去访问,安全性相对...

SSL构建单双向https认证!https部署及注意事项!

1.  SSL基本介绍 我们常常在使用网上银行时看到的连接都是以“https”开始的,那么这个https是什么呢?这其实是表示目前连接使用了SSL进加密,能保证客户端到服务器端的通信都在被保护起来,...

HTTPS客户端程序示例

#include #include #include #include #include #include #include #include #include #...

Libcurl的编译_HTTP/HTTPS客户端源码示例

libcurl的编译,及HTTP/HTTPS客户端源码示例,支持文件上传和下载。

HTTPS 客户端发送请求(二)

https 完整web开发 Tomcat 6.0 配置 1、生成安全访问的证书。 命令行下执行:keytool -genkey -alias tomcat -keyalg RSA -keys...

[NodeJS]创建HTTP、HTTPS服务器与客户端

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接...

使用httpclient构造http/https客户端

目前接口测试使用jmeter工具配置服务器IP、端口号、协议、url路径、请求方法、请求参数,参考jmeter的设计我们可以用编程语言自己实现一个客户端,本文主要讲一下使用httpclient构造ht...

JAVA调用HTTPS双向认证API

最近稍微清闲,然后稍微研究一下关于HTTPS,SSL的相关知识,算是一些随手笔记,对自己学习的记录。 import java.io.InputStream; import java.net.URL; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Https双向认证客户端请求方式
举报原因:
原因补充:

(最多只允许输入30个字)