您的位置:首页 > 编程语言 > Java开发

JAVA客户端连接SSL

2009-12-03 14:34 239 查看
今天遇到了一个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;

        }

    }

   

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息