HttpsURLConnection使用,并实现双向认证

发布时间:2019-11-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了HttpsURLConnection使用,并实现双向认证脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

添加信任所有服务端证书也可在方法中控制

package something;  import java.securITy.cert.CertificateException; import java.security.cert.X509Certificate;  import javax.net.ssl.X509TrustManager; /**  * 信任所有证书  * @author hp  *  */ public class AllTrustManager implements X509TrustManager {      @override     public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {         // TODO Auto-generated method stub      }      @Override     public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {         // TODO Auto-generated method stub      }      @Override     public X509Certificate[] getAcceptedIssuers() {         // TODO Auto-generated method stub         return null;     }  }

使用HttpsURLConnection发送POST请求(默认443端口)

package something;  import java.io.BufferedReader; import java.io.File; import java.io.FileinputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PRintWriter; import java.net.URL; import java.security.KeyManagementException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException;  import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLSocketFactory; import javax.net.ssl.TrustManager;  public class HttpsRequest {     //测试url     private final static String URL_test="https://www.baidu.COM";     //客户端证书路径     private final static String PATH="c://xxxx";     //证书密码     private final static String psw="123456";     /**      * 发送POST请求      * @param agrs      * @return      * @throws IOException      * @throws KeyManagementException      * @throws KeyStoreException      * @throws NoSuchAlgorithmException      * @throws CertificateException      * @throws UnrecoverableKeyException      */     public String doPost(String agrs) throws IOException, KeyManagementException, KeyStoreException, NoSuchAlgorithmException, CertificateException, UnrecoverableKeyException{         //导入客户端证书         KeyStore ks=KeyStore.getInstance("pkcs12");         FileInputStream instream = new FileInputStream(new File(PATH));         ks.load(instream, psw.toCharArray());         KeyManagerFactory kmf=KeyManagerFactory.getInstance("SunX509");         kmf.init(ks, psw.toCharArray());         //添加信任证书         TrustManager[] tm={new AllTrustManager()};//AllTrustManager()为信任所有证书                  SSLContext ctx=SSLContext.getInstance("SSL");//创建ssl上下文         //初始化 ;参数1为null,则不上传客户端证书(通常情况都是如此);         ctx.init(kmf.getKeyManagers(), tm, new SecureRandom());         //ctx.init(kmf.getKeyManagers(), null, new SecureRandom());//验证系统默认证书         //ctx.init(kmf.getKeyManagers(), TrustManager[] tm, new SecureRandom());//导出服务端证书,然后按照keymanager一样实现trustmanager         SSLSocketFactory sf=ctx.getSocketFactory();                  URL _url=new URL(URL_TEST);         HttpsURLConnection conn=(HttpsURLConnection) _url.oPEnConnection();         conn.setRequestMethod("POST");//设定请求方法         conn.setConnectTimeout(20000);         conn.setReadTimeout(20000);         conn.setDoInput(true);//打开输入流         conn.setDoOutput(true);//打开输出流写入写出参数必需         conn.setSSLSocketFactory(sf);//添加ssl参数         //输出参数         PrintWriter pw=new PrintWriter(conn.getOutputStream());         pw.write(agrs);         pw.flush();         //获取输入流         BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream()));         StringBuffer result=new StringBuffer();         String s=br.readLine();         while(s!=null){             result.append(s);             s=br.readLine();         }         pw.close();         br.close();         return result.toString();     } }

脚本宝典总结

以上是脚本宝典为你收集整理的HttpsURLConnection使用,并实现双向认证全部内容,希望文章能够帮你解决HttpsURLConnection使用,并实现双向认证所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。