`

HttpClient 如何忽略证书验证访问https - ALLOW_ALL_HOSTNAME_VERIFIER

    博客分类:
  • Java
阅读更多

HttpClient 如何忽略证书验证 - ALLOW_ALL_HOSTNAME_VERIFIER

 

1。设置可以访问HTTPS

 

Function - getNewHttpClient 

 

/** 
	* @Title: getNewHttpClient 
	* @Description: Methods Description
	* @param @return    
	* @return HttpClient 
	* @throws 
	*/ 
	
	private HttpClient getNewHttpClient() {
		try {
			KeyStore trustStore = KeyStore.getInstance(KeyStore
					.getDefaultType());
			trustStore.load(null, null);
			SSLSocketFactory sf = new SSLSocketFactory(trustStore);
			sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
			HttpParams params = new BasicHttpParams();
			HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
			HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
			SchemeRegistry registry = new SchemeRegistry();
			registry.register(new Scheme("http", PlainSocketFactory
					.getSocketFactory(), 80));
			registry.register(new Scheme("https", sf, 443));
			ClientConnectionManager ccm = new ThreadSafeClientConnManager(
					params, registry);
			return new DefaultHttpClient(ccm, params);
		} catch (Exception e) {
			return new DefaultHttpClient();
		}
	}

 

2.忽略证书验证 

 

Class: SSLSocketFactory

 

import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
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.ssl.SSLSocketFactory;


public class SSLSocketFactory extends SSLSocketFactory {
	/** 
	* @Fields sslContext 
	* @Description: Field Description
	*/
	SSLContext sslContext = SSLContext.getInstance("TLS");

	/** 
	* <p>Title: </p> 
	* <p>Description: </p> 
	* @param truststore
	* @throws NoSuchAlgorithmException
	* @throws KeyManagementException
	* @throws KeyStoreException
	* @throws UnrecoverableKeyException 
	*/
	public SSLSocketFactory(KeyStore truststore)
			throws NoSuchAlgorithmException, KeyManagementException,
			KeyStoreException, UnrecoverableKeyException {
		super(truststore);
		TrustManager tm = new X509TrustManager() {
			public void checkClientTrusted(X509Certificate[] chain,
					String authType) throws CertificateException {
			}

			public void checkServerTrusted(X509Certificate[] chain,
					String authType) throws CertificateException {
			}

			public X509Certificate[] getAcceptedIssuers() {
				return null;
			}
		};
		sslContext.init(null, new TrustManager[] { tm }, null);
	}

	/* (non-Javadoc)
	* <p>Title: createSocket</p> 
	* <p>Description: </p> 
	* @param socket
	* @param host
	* @param port
	* @param autoClose
	* @return
	* @throws IOException
	* @throws UnknownHostException 
	* @see org.apache.http.conn.ssl.SSLSocketFactory#createSocket(java.net.Socket, java.lang.String, int, boolean) 
	*/
	@Override
	public Socket createSocket(Socket socket, String host, int port,
			boolean autoClose) throws IOException, UnknownHostException {
		return sslContext.getSocketFactory().createSocket(socket, host, port,
				autoClose);
	}

	/* (non-Javadoc)
	* <p>Title: createSocket</p> 
	* <p>Description: </p> 
	* @return
	* @throws IOException 
	* @see org.apache.http.conn.ssl.SSLSocketFactory#createSocket() 
	*/
	@Override
	public Socket createSocket() throws IOException {
		return sslContext.getSocketFactory().createSocket();
	}
}
 

 

3。调用并用HTTPS访问

 

DefaultHttpClient httpclient = (DefaultHttpClient) getNewHttpClient();
				
		try {
			//Secure Protocol implementation.  
			SSLContext ctx = SSLContext.getInstance("SSL");
			//Implementation of a trust manager for X509 certificates  
			X509TrustManager tm = new X509TrustManager() {

				public void checkClientTrusted(X509Certificate[] xcs,
						String string) throws CertificateException {

				}

				public void checkServerTrusted(X509Certificate[] xcs,
						String string) throws CertificateException {
				}

				public X509Certificate[] getAcceptedIssuers() {
					return null;
				}
			};
			ctx.init(null, new TrustManager[] { tm }, null);
			SSLSocketFactory ssf = new SSLSocketFactory(ctx);
			ClientConnectionManager ccm = httpclient.getConnectionManager();
			//register https protocol in httpclient's scheme registry  
			SchemeRegistry sr = ccm.getSchemeRegistry();
			sr.register(new Scheme("https", 443, ssf));
		} catch (Exception e) {
			e.printStackTrace();
		}

		HttpGet httpGet = new HttpGet(httpGetUrl);
		HttpResponse response = httpclient.execute(httpGet, localContext);
 

 

 

 

0
0
分享到:
评论
1 楼 JetMah 2012-12-18  
可以参考这里:http://stackoverflow.com/questions/2703161/how-to-ignore-ssl-certificate-errors-in-apache-httpclient-4-0

相关推荐

    HttpClient4.5 实现https忽略SSL证书验证

    使用HttpClient4.5实现https请求忽略SSL证书验证工具类

    httpClient实例httpClient调用 http/https实例 忽略SSL验证

    这个实例主要涉及如何配置HttpClient来忽略SSL(Secure Socket Layer)验证,这对于在开发和测试环境中处理自签名证书或未认证的服务器非常有用。以下将详细介绍HttpClient的使用以及如何进行SSL验证的忽略。 首先...

    jdk-10_windows-x64_bin.rar

    - **HTTP客户端API**:提供了一个新的标准HTTP客户端API(java.net.http.HttpClient),以替代旧的sun.net.www.http.HttpClient。 8. **JDK的安装与配置**:安装"jdk-10_windows-x64_bin.exe"后,需要设置环境变量...

    Client-https-server.rar_httpclient服务器_https_https client_https c

    请注意,这只是一个基本示例,实际应用中应考虑更多的安全因素,例如正确处理证书链、支持不同的加密算法,以及配置证书验证策略。 在"Client https server.doc"文档中,可能会包含更详细的步骤、示例代码和注意...

    OpenJDK11U-jdk_aarch64_linux_hotspot_11.0.10_9.tar.gz

    2. **HTTP客户端API**:Java 11添加了内置的HTTP客户端API(java.net.http.HttpClient),为开发者提供了一种标准的方式来发送HTTP/1.1和HTTP/2请求。 3. **动态类文件常量**:新的`java.lang.invoke....

    httpclient-4.5.13-API文档-中文版.zip

    赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.13.pom; 包含翻译后的API文档:...

    httpclient-4.5.6-API文档-中文版.zip

    赠送jar包:httpclient-4.5.6.jar; 赠送原API文档:httpclient-4.5.6-javadoc.jar; 赠送源代码:httpclient-4.5.6-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.6.pom; 包含翻译后的API文档:httpclient...

    httpclient-4.5.13-API文档-中英对照版.zip

    赠送jar包:httpclient-4.5.13.jar; 赠送原API文档:httpclient-4.5.13-javadoc.jar; 赠送源代码:httpclient-4.5.13-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.13.pom; 包含翻译后的API文档:...

    httpclient-4.5.12-API文档-中英对照版.zip

    赠送jar包:httpclient-4.5.12.jar; 赠送原API文档:httpclient-4.5.12-javadoc.jar; 赠送源代码:httpclient-4.5.12-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.12.pom; 包含翻译后的API文档:...

    9-HTTP_Client.rar_9-HTTP_Client_C http_STM32 HTTPClient_client_h

    STM3210X HTTP_Client

    httpclient-4.5.6-API文档-中英对照版.zip

    赠送jar包:httpclient-4.5.6.jar; 赠送原API文档:httpclient-4.5.6-javadoc.jar; 赠送源代码:httpclient-4.5.6-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.6.pom; 包含翻译后的API文档:httpclient...

    commons-httpclient3.1.jar,commons-codec1.3.jar,commons-logging1.1.1.jar

    最后,`commons-httpclient-3.1.jar`作为主要的HTTP客户端库,负责建立连接、发送请求和接收响应。 在开发过程中,将这些库包含到项目的类路径中是必要的,这样就可以利用它们的功能来执行HTTP操作。然而,需要注意...

    Android使用HttpClient和HttpsUrlConnection两种方式访问https网站

    socketFactory.setHostnameVerifier(EasySSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); ``` ### 2. Android中的HttpsURLConnection `HttpsURLConnection`是Java标准库提供的用于HTTPS通信的API,它比`...

    httpclient-4.5.5-API文档-中文版.zip

    赠送jar包:httpclient-4.5.5.jar; 赠送原API文档:httpclient-4.5.5-javadoc.jar; 赠送源代码:httpclient-4.5.5-sources.jar; 包含翻译后的API文档:httpclient-4.5.5-javadoc-API文档-中文(简体)版.zip ...

    Android-Httpclient_Get_Post

    这个名为"Android-Httpclient_Get_Post"的资源可能是一个示例项目或教程,展示了如何在Android应用中使用`HttpClient`进行网络数据的获取与提交。 首先,`HttpClient`是Apache的一个组件,它提供了对HTTP协议的全面...

    openjdk-10.0.1_windows-x64_bin.tar

    另一个显著变化是引入了HTTP客户端API(jdk.httpclient模块),这是一个新的内置HTTP客户端,旨在替换以前的sun.net.www.http.HttpClient。 在解压"openjdk-10.0.1_windows-x64_bin.tar"后,你会得到一个名为"jdk-...

    httpclient-4.4.1-API文档-中文版.zip

    赠送jar包:httpclient-4.4.1.jar; 赠送原API文档:httpclient-4.4.1-javadoc.jar; 赠送源代码:httpclient-4.4.1-sources.jar; 赠送Maven依赖信息文件:httpclient-4.4.1.pom; 包含翻译后的API文档:httpclient...

    wechatpay-apache-httpclient-0.2.1.jar

    wechatpay-apache-httpclient-0.2.1.jar

    httpclient-4.5.10-API文档-中文版.zip

    赠送jar包:httpclient-4.5.10.jar; 赠送原API文档:httpclient-4.5.10-javadoc.jar; 赠送源代码:httpclient-4.5.10-sources.jar; 赠送Maven依赖信息文件:httpclient-4.5.10.pom; 包含翻译后的API文档:...

    22-05-11-048_IServiceProvider_IUrlHelper_HttpClient(深入理解)

    在.NET Core Web开发中,`IServiceProvider`、`IUrlHelper`和`HttpClient`是三个非常重要的组件,尤其是在构建复杂的Web应用程序如nopCommerce时。让我们深入理解这些概念及其在实际应用中的作用。 首先,`...

Global site tag (gtag.js) - Google Analytics