Java tutorial
/* * Copyright (c) 2013 The CCP project authors. All Rights Reserved. * * Use of this source code is governed by a Beijing Speedtong Information Technology Co.,Ltd license * that can be found in the LICENSE file in the root of the web site. * * http://www.cloopen.com * * An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ package com.tmount.business.cloopen.util; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.Principal; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.impl.client.DefaultHttpClient; public class CcopHttpClient { /** * SSL * @param hostname ??IP?? * @param protocol ????TLS-?? * @param port ?? * @param scheme ???? * @return HttpClient * @throws NoSuchAlgorithmException * @throws KeyManagementException */ public DefaultHttpClient registerSSL(String hostname, String protocol, int port, String scheme) throws NoSuchAlgorithmException, KeyManagementException { //HttpClient DefaultHttpClient httpclient = new DefaultHttpClient(); //SSL SSLContext ctx = SSLContext.getInstance(protocol); //??? X509TrustManager tm = new X509TrustManager() { /** * ?? */ @Override public void checkClientTrusted(X509Certificate[] chain, String authType) throws java.security.cert.CertificateException { //? ? } /** * ??? * @param chain ? * @param authType ???authTypeRSA */ @Override public void checkServerTrusted(X509Certificate[] chain, String authType) throws java.security.cert.CertificateException { if (chain == null || chain.length == 0) throw new IllegalArgumentException("null or zero-length certificate chain"); if (authType == null || authType.length() == 0) throw new IllegalArgumentException("null or zero-length authentication type"); boolean br = false; Principal principal = null; for (X509Certificate x509Certificate : chain) { principal = x509Certificate.getSubjectX500Principal(); if (principal != null) { br = true; return; } } if (!br) { throw new CertificateException("????"); } } /** * CA?? */ @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[0]; } }; //?SSL ctx.init(null, new TrustManager[] { tm }, new java.security.SecureRandom()); //SSL SSLSocketFactory socketFactory = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); Scheme sch = new Scheme(scheme, port, socketFactory); //SSL httpclient.getConnectionManager().getSchemeRegistry().register(sch); return httpclient; } }