0 0

java中的httpclient的SSL出错5

我直接下载最新版的httpclient,直接复制的示例中的代码,只是把网址换成我自己想要的网址.并且,在我电脑中,在办公室服务器里测试都通过,但上传上机房服务器里面就出错了.

java代码

	public void login()
	{
        try
        {
        	//初始化 httpclient
        	DefaultHttpClient httpclient = new DefaultHttpClient();
        	//设置证书
	        httpclient.getConnectionManager().getSchemeRegistry().register(sch);
	        String url = "login.jsp";
	        HttpPost httpost = new HttpPost(url);
	        print("准备登陆网站,网址:"+url);
	        List <NameValuePair> nvps = new ArrayList <NameValuePair>();
	        nvps.add(new BasicNameValuePair("actionName", "login"));
	        nvps.add(new BasicNameValuePair("login_password", "11"));
	        nvps.add(new BasicNameValuePair("login_user", "111"));	      
	        httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
	        HttpResponse response = httpclient.execute(httpost);
	        String statusLine = response.getStatusLine().toString();
	        print("得到网页打开状态"+statusLine);
	        if(statusLine.equals("HTTP/1.1 200 OK"))
	        {
                 }  
             }
         }
	/*
	 * 设置SSL证书
	 */
	public void setSSL()
	{
        try
        {
			KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());      
			String p = System.getProperty("user.dir")+"/my.key";
			print(p);
	        FileInputStream instream = new FileInputStream(new File(p)); 
	        try {
	        	trustStore.load(instream, "123456".toCharArray());
	        }catch(Exception e)
	        {
	        	e.printStackTrace();
	        }
	        finally {
	            instream.close();
	        }     	             
	    	SSLSocketFactory socketFactory = new SSLSocketFactory(trustStore);
	        sch = new Scheme("https", socketFactory, 443);
        }
        catch(Exception e)
        {
        	e.printStackTrace();
        }
	}


程序出错提示
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
        at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:371)
        at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
        at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:399)
        at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143)
        at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
        at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
        at login(login.java:89)
2011年2月15日 13:40

1个答案 按时间排序 按投票排序

0 0

采纳的答案

referenced this link
http://theskeleton.wordpress.com/2010/07/24/avoiding-the-javax-net-ssl-sslpeerunverifiedexception-peer-not-authenticated-with-httpclient/

The following class takes a HttpClient and returns a new HttpClient that accepts any SSL certificate:
01 public class WebClientDevWrapper {
02
03     public static HttpClient wrapClient(HttpClient base) {
04         try {
05             SSLContext ctx = SSLContext.getInstance("TLS");
06             X509TrustManager tm = new X509TrustManager() {
07
08                 public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException {
09                 }
10
11                 public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException {
12                 }
13
14                 public X509Certificate[] getAcceptedIssuers() {
15                     return null;
16                 }
17             };
18             ctx.init(null, new TrustManager[]{tm}, null);
19             SSLSocketFactory ssf = new SSLSocketFactory(ctx);
20             ssf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
21             ClientConnectionManager ccm = base.getConnectionManager();
22             SchemeRegistry sr = ccm.getSchemeRegistry();
23             sr.register(new Scheme("https", ssf, 443));
24             return new DefaultHttpClient(ccm, base.getParams());
25         } catch (Exception ex) {
26             ex.printStackTrace();
27             return null;
28         }
29     }
30 }

You can then do something like this in the code that creates the HttpClient:
1 this.client = new DefaultHttpClient();
2 if(dev) {
3     this.client = WebClientDevWrapper.wrapClient(client);
4 }


referenced this link
http://theskeleton.wordpress.com/2010/07/24/avoiding-the-javax-net-ssl-sslpeerunverifiedexception-peer-not-authenticated-with-httpclient/

2011年2月15日 17:45

相关推荐

    java,HttpClient模拟上传,绕过SSL认证

    在Java编程中,HttpClient库是Apache提供的一款强大的HTTP客户端工具,用于执行HTTP和HTTPS请求。在某些场景下,比如开发测试或调试时,我们可能需要模拟上传文件到HTTPS服务器,而这个过程可能会遇到SSL(Secure ...

    JAVA利用HttpClient进行HTTPS接口调用

    在`SSLClient.java`文件中,我们可能会看到配置SSL上下文(SSLContext)的过程。这是设置信任的证书和密钥存储的地方。代码可能包括创建一个TrustManager,用于接受任何服务器的证书,或者使用自定义的信任管理器来...

    http远程接口调用-httpClient+跳过SSL证书校验

    本文将详细介绍如何使用Apache HttpClient库进行HTTP远程接口调用,并讲解如何在Java中跳过SSL证书校验。 HttpClient是Apache提供的一款强大的HTTP客户端库,支持多种HTTP协议版本和功能,包括GET、POST请求、...

    Java 使用HttpClient保持SESSION状态

    下面我们将详细探讨如何在Java中使用HttpClient来实现这一目标。 首先,我们需要导入必要的Apache HttpClient库,通常包含以下依赖: ```xml &lt;groupId&gt;org.apache.httpcomponents &lt;artifactId&gt;httpclient ...

    java-HttpClient学习,和解析html.zip

    java_HttpClient学习,和解析htmljava_HttpClient学习,和解析html java_HttpClient学习,和解析htmljava_HttpClient学习,和解析html java_HttpClient学习,和解析htmljava_HttpClient学习,和解析html java_...

    java SSL HttpClient

    java SSL HttpClient。java 通过ssl去访问服务器(tomcat)

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

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

    java 中HttpClient传输xml字符串实例详解

    Java中的HttpClient是一个强大的HTTP客户端库,常用于与服务器进行数据交互。在本实例中,我们将讲解如何使用HttpClient来传输XML字符串。首先,我们需要确保引入了正确的依赖,包括Apache HttpClient、HttpMime、...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在本文中,我们将详细介绍如何使用JAVA的HttpClient库来发送POST请求,以便与HTTPS服务器进行交互。首先,我们需要继承DefaultHttpClient类,以便自定义HttpClient的行为。然后,我们需要使用X509TrustManager来忽略...

    java使用HttpClient通过url下载文件到本地

    在Java编程环境中,HttpClient库是Apache HTTP Components项目的一部分,它为开发者提供了强大的HTTP客户端功能,可以用来发送HTTP请求并接收响应。在这个特定的场景中,我们利用HttpClient来从指定的URL下载文件到...

    java httpclient 模拟登录

    在Java编程中,HttpClient库是Apache提供的一款强大的HTTP客户端工具,用于执行HTTP请求,包括GET、POST、PUT等多种HTTP方法。在"java httpclient 模拟登录"这个场景下,我们通常会用到HttpClient来模拟用户登录网站...

    java17 https 忽略ssl认证, httpclient5 ,springboot3.2.7 脚手架

    springboot3.2.7 基于java17 ,测试https 接口,基于 RestTemplate 实现

    Java中Httpclient需要的jar包(httpclient.jar,httpcore.jar及commons-logging.jar)

    在Java编程中,Apache HttpClient库是一个非常重要的工具,它提供了丰富的功能来执行HTTP请求,包括GET、POST等方法。这个库使得开发者能够方便地与Web服务器进行交互,处理各种HTTP协议相关的任务。在标题和描述中...

    详解.NET Core 使用HttpClient SSL请求出错的解决办法

    在.NET Core中使用HttpClient进行SSL请求时,开发者可能会遇到一个常见的问题:SSL证书验证失败。这通常发生在尝试连接到使用自签名证书或未被信任证书颁发机构(CA)签名的HTTPS服务时。当.NET Core的HttpClient...

    JAVA httpclient jar下载

    httpclient常用封装工具 doGet(String url, Map, String&gt; param) doPost(String url, Map, String&gt; param) doPostJson(String url, String json)

    java实现httpClient样例

    这个样例项目旨在帮助初学者理解如何在Java中使用HttpClient来与Web服务器进行交互。 在JavaHttpProject这个项目中,你可以找到以下关键知识点: 1. **HttpClient的创建**:首先,你需要创建一个HttpClient实例。...

    httpclient4.5 绕过ssl认证文件访问

    HTTPClient 4.5中提供了这样的功能,可以让我们自定义SSL上下文,从而绕过默认的证书验证。以下是如何操作的步骤: 1. **创建自定义的X509TrustManager**:这个类负责验证服务器证书。我们可以创建一个信任所有证书...

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

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

    Java HttpClient 全部的jar包

    在Java项目中,使用HttpClient可以实现与Web服务器的高效通信。下面将详细介绍这12个jar包的作用及其在HttpClient中的功能: 1. `commons-beanutils-1.8.0.jar`: Apache Commons BeanUtils库提供了对Java Beans属性...

    Java-HttpClient帮助文档

    Java HttpClient是Apache软件基金会的Apache HTTP Components项目中的一个核心组件,它提供了一个强大的、高度可定制的客户端HTTP通信API。这个工具广泛应用于Java开发者中,用于执行HTTP请求,获取响应,处理各种...

Global site tag (gtag.js) - Google Analytics