证书不安全解决HttpClient 如何忽略证书验证 - ALLOW_ALL_HOSTNAME_VERIFIER

HttpClient 如何忽略证书验证 - ALLOW_ALL_HOSTNAME_VERIFIER

 

1。设置可以访问HTTPS

 

Function - getNewHttpClient 

 

Java代码   收藏代码
  1. /**  
  2.     * @Title: getNewHttpClient  
  3.     * @Description: Methods Description 
  4.     * @param @return     
  5.     * @return HttpClient  
  6.     * @throws  
  7.     */   
  8.       
  9.     private HttpClient getNewHttpClient() {  
  10.         try {  
  11.             KeyStore trustStore = KeyStore.getInstance(KeyStore  
  12.                     .getDefaultType());  
  13.             trustStore.load(nullnull);  
  14.             SSLSocketFactory sf = new SSLSocketFactory(trustStore);  
  15.             sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);  
  16.             HttpParams params = new BasicHttpParams();  
  17.             HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);  
  18.             HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);  
  19.             SchemeRegistry registry = new SchemeRegistry();  
  20.             registry.register(new Scheme("http", PlainSocketFactory  
  21.                     .getSocketFactory(), 80));  
  22.             registry.register(new Scheme("https", sf, 443));  
  23.             ClientConnectionManager ccm = new ThreadSafeClientConnManager(  
  24.                     params, registry);  
  25.             return new DefaultHttpClient(ccm, params);  
  26.         } catch (Exception e) {  
  27.             return new DefaultHttpClient();  
  28.         }  
  29.     }  

 

2.忽略证书验证 

 

Class: SSLSocketFactory

 

Java代码   收藏代码
  1. import java.io.IOException;  
  2. import java.net.Socket;  
  3. import java.net.UnknownHostException;  
  4. import java.security.KeyManagementException;  
  5. import java.security.KeyStore;  
  6. import java.security.KeyStoreException;  
  7. import java.security.NoSuchAlgorithmException;  
  8. import java.security.UnrecoverableKeyException;  
  9. import java.security.cert.CertificateException;  
  10. import java.security.cert.X509Certificate;  
  11. import javax.net.ssl.SSLContext;  
  12. import javax.net.ssl.TrustManager;  
  13. import javax.net.ssl.X509TrustManager;  
  14. import org.apache.http.conn.ssl.SSLSocketFactory;  
  15.   
  16.   
  17. public class SSLSocketFactory extends SSLSocketFactory {  
  18.     /**  
  19.     * @Fields sslContext  
  20.     * @Description: Field Description 
  21.     */  
  22.     SSLContext sslContext = SSLContext.getInstance("TLS");  
  23.   
  24.     /**  
  25.     * 

    Title: 

     
     
  26.     * 

    Description: 

     
     
  27.     * @param truststore 
  28.     * @throws NoSuchAlgorithmException 
  29.     * @throws KeyManagementException 
  30.     * @throws KeyStoreException 
  31.     * @throws UnrecoverableKeyException  
  32.     */  
  33.     public SSLSocketFactory(KeyStore truststore)  
  34.             throws NoSuchAlgorithmException, KeyManagementException,  
  35.             KeyStoreException, UnrecoverableKeyException {  
  36.         super(truststore);  
  37.         TrustManager tm = new X509TrustManager() {  
  38.             public void checkClientTrusted(X509Certificate[] chain,  
  39.                     String authType) throws CertificateException {  
  40.             }  
  41.   
  42.             public void checkServerTrusted(X509Certificate[] chain,  
  43.                     String authType) throws CertificateException {  
  44.             }  
  45.   
  46.             public X509Certificate[] getAcceptedIssuers() {  
  47.                 return null;  
  48.             }  
  49.         };  
  50.         sslContext.init(nullnew TrustManager[] { tm }, null);  
  51.     }  
  52.   
  53.     /* (non-Javadoc) 
  54.     * 

    Title: createSocket

     
     
  55.     * 

    Description: 

     
     
  56.     * @param socket 
  57.     * @param host 
  58.     * @param port 
  59.     * @param autoClose 
  60.     * @return 
  61.     * @throws IOException 
  62.     * @throws UnknownHostException  
  63.     * @see org.apache.http.conn.ssl.SSLSocketFactory#createSocket(java.net.Socket, java.lang.String, int, boolean)  
  64.     */  
  65.     @Override  
  66.     public Socket createSocket(Socket socket, String host, int port,  
  67.             boolean autoClose) throws IOException, UnknownHostException {  
  68.         return sslContext.getSocketFactory().createSocket(socket, host, port,  
  69.                 autoClose);  
  70.     }  
  71.   
  72.     /* (non-Javadoc) 
  73.     * 

    Title: createSocket

     
     
  74.     * 

    Description: 

     
     
  75.     * @return 
  76.     * @throws IOException  
  77.     * @see org.apache.http.conn.ssl.SSLSocketFactory#createSocket()  
  78.     */  
  79.     @Override  
  80.     public Socket createSocket() throws IOException {  
  81.         return sslContext.getSocketFactory().createSocket();  
  82.     }  
  83. }  
 

 

3。调用并用HTTPS访问

 

Java代码   收藏代码
  1. HttpClient httpclient =getNewHttpClient();  
  2. HttpGet httpPost = new HttpPost(httpGetUrl);  
  3. HttpResponse response = httpclient.execute(httpGet);

你可能感兴趣的:(java,Java,http,https,证书)