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单双向认证过程
  • duanbokan
  • duanbokan
  • 2016年03月10日 16:06
  • 38896

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

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

https 客户端和服务器的证书必须是同一个

如果用相同的命令(完全一样)生成的俩证书,一个在客户端使用, 一个在服务器端调用 那么在验证的过程中也会失败 sun.security.validator.ValidatorException: ...
  • ID19870510
  • ID19870510
  • 2016年12月31日 12:52
  • 1077

Https协议的使用--服务器端和客户端

文章内容 1.Web服务器(tomcat)端配置 2.客户端(HttpClient)实现(Get/Post) 1.Web服务器(tomcat)端配置 1.1.服务器证书生成 使用keyt...
  • villare
  • villare
  • 2017年07月16日 16:33
  • 500

HTTPS客户端程序示例

#include #include #include #include #include #include #include #include #include #...
  • q553716434
  • q553716434
  • 2012年05月19日 09:21
  • 2501

https 建立连接过程

思考问题的顺序学技术时,总是会问什么?这里也不例外,https为什么会存在,它有什么优点,又有什么缺点?为什么网站有的用http,有的用https?如果不能很好的回答,就往下看吧。http通信存在的问...
  • wangjun5159
  • wangjun5159
  • 2016年05月26日 22:00
  • 11088

HTTPS 客户端发送请求(一)

HTTPS 发送请求(一)   摘 要 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问。但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信...
  • u014201191
  • u014201191
  • 2015年06月21日 02:22
  • 1005

java客户端调用https资源

  • 2014年11月17日 23:13
  • 5KB
  • 下载

https 双向认证开发实践

https双向认证 证书如何使用 概念介绍 1.https协议介绍 与http协议的区别 https协议简单来说就是http协议的基础上增加了SSL协议 ,从而来保证数据传输的安全性。 SSL协...
  • dtlscsl
  • dtlscsl
  • 2015年11月30日 20:30
  • 5007

IOS之https请求认证及双向认证

一、背景: 苹果从IOS9.0以后就要求使用https,今年发布说的是在2017年1月1日后,所有上架的APP必须使用HTTPS(貌似目前推迟了)。不论怎么说,使用https时迟早的事情,之前通过在...
  • guobing19871024
  • guobing19871024
  • 2016年12月23日 17:52
  • 1711
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Https双向认证客户端请求方式
举报原因:
原因补充:

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