posts - 297,  comments - 1618,  trackbacks - 0
                原文出處:http://ms.mblogger.cn/veaven/posts/18276.aspx
               今天遇到了一個JAVA客戶端連接SSL的問題,查了一下javax.net.ssl.HttpsURLConnection的使用,查到這篇不錯的文章,轉載一下。
              

          /**
           * <p>Title: </p>
           *
           * <p>Description: </p>
           *
           * <p>Copyright: Copyright (c) 2005</p>
           *
           * <p>Company: </p>
           *
           * @author not attributable
           * @version 1.0
           */
          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.net.URL;

          import javax.net.ssl.HostnameVerifier;
          import javax.net.ssl.HttpsURLConnection;
          import javax.net.ssl.SSLSession;
          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import java.io.DataOutputStream;
          import java.net.HttpURLConnection;
          import org.apache.xerces.impl.dv.util.Base64;

          /**
           * @author lyw
           */

          public class ssltest {

              protected String connect(String strUrl) {
                 
                 

                      trustAllHttpsCertificates();
                      HttpsURLConnection.setDefaultHostnameVerifier(hv);

                    
                      URL url = new URL(strUrl);
                      HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
           連接到HTTPS服務器
                    ......

              }

              HostnameVerifier hv = new HostnameVerifier() {
                  public boolean verify(String urlHostName, SSLSession session) {
                      System.out.println("Warning: URL Host: " + urlHostName + " vs. "
                                         + session.getPeerHost());
                      return true;
                  }
              };


              private static void trustAllHttpsCertificates() throws Exception {

                  //  Create a trust manager that does not validate certificate chains:

                  javax.net.ssl.TrustManager[] trustAllCerts =
                          new javax.net.ssl.TrustManager[1];

                  javax.net.ssl.TrustManager tm = new miTM();

                  trustAllCerts[0] = tm;

                  javax.net.ssl.SSLContext sc =
                          javax.net.ssl.SSLContext.getInstance("SSL");

                  sc.init(null, trustAllCerts, null);

                  javax.net.ssl.HttpsURLConnection.setDefaultSSLSocketFactory(
                          sc.getSocketFactory());

              }

              public static class miTM implements javax.net.ssl.TrustManager,
                      javax.net.ssl.X509TrustManager {
                  public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                      return null;
                  }

                  public boolean isServerTrusted(
                          java.security.cert.X509Certificate[] certs) {
                      return true;
                  }

                  public boolean isClientTrusted(
                          java.security.cert.X509Certificate[] certs) {
                      return true;
                  }

                  public void checkServerTrusted(
                          java.security.cert.X509Certificate[] certs, String authType) throws
                          java.security.cert.CertificateException {
                      return;
                  }

                  public void checkClientTrusted(
                          java.security.cert.X509Certificate[] certs, String authType) throws
                          java.security.cert.CertificateException {
                      return;
                  }
              }
             
          }

          posted on 2008-01-11 15:48 阿蜜果 閱讀(3058) 評論(0)  編輯  收藏 所屬分類: Java
          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

                生活將我們磨圓,是為了讓我們滾得更遠——“圓”來如此。
                我的作品:
                玩轉Axure RP  (2015年12月出版)
                

                Power Designer系統分析與建模實戰  (2015年7月出版)
                
               Struts2+Hibernate3+Spring2   (2010年5月出版)
               

          留言簿(263)

          隨筆分類

          隨筆檔案

          文章分類

          相冊

          關注blog

          積分與排名

          • 積分 - 2296332
          • 排名 - 3

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 金门县| 射洪县| 斗六市| 临沭县| 浪卡子县| 祁阳县| 英超| 于都县| 西华县| 惠来县| 静海县| 辽阳县| 桂阳县| 米易县| 皋兰县| 罗甸县| 银川市| 乌恰县| 绥德县| 四川省| 新建县| 黎城县| 道孚县| 平原县| 板桥市| 邵东县| 海林市| 什邡市| 绥中县| 溆浦县| 玉门市| 平顶山市| 固阳县| 甘洛县| 右玉县| 梨树县| 修水县| 胶南市| 来凤县| 南昌县| 樟树市|