java https client信任所有证书

package httpsclient;

import java.io.IOException;
import java.util.List;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.http.client.entity.EntityBuilder;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import java.security.KeyStore;  
import iF.*;

import javax.net.ssl.SSLContext;
import org.apache.http.conn.ssl.SSLContexts;  
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;

import com.google.gson.Gson;

public class MyHttp {
    public static void main(String[] args) throws Exception{
        
//        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
//        SSLContext sslcontext = SSLContexts.custom().loadTrustMaterial(trustStore, new TrustSelfSignedStrategy()).build();
//        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        SSLContext sslcontext = SSLContext.getInstance("SSLv3");  //建立证书实体    
        javax.net.ssl.TrustManager[] trustAllCerts = new javax.net.ssl.TrustManager[1];
        javax.net.ssl.TrustManager tm = new miTM();
        trustAllCerts[0] = tm;
        sslcontext.init(null, trustAllCerts, null);
        SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext,SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
    
        
        try{
            String url = "https://127.0.0.1:8787/";
            
           
            HttpPost httppost = new HttpPost(url);
            Gson gson = new Gson();
            EntityBuilder entitybuilder = EntityBuilder.create();
//            GetLiveListReq req = new GetLiveListReq();
//            req.setMsgType("GetLiveList");
//            req.setNum(1);
//            req.setStart(1);
//            req.setSessionId("1001");
            LoginReq req = new LoginReq();
            req.setMsgType("Login");
            req.setUserName("11");
            entitybuilder.setText(gson.toJson(req));
            httppost.setEntity(entitybuilder.build());
            
            System.out.println("executing request " + httppost.getURI());
            
            ResponseHandler<String> responseHandler = new ResponseHandler<String>(){
                public String handleResponse(final HttpResponse response) throws ClientProtocolException,IOException{
                    int status = response.getStatusLine().getStatusCode();
                    if (status >= 200 && status < 400){
                        System.out.println("Send success");
                        HttpEntity entity = response.getEntity();
                        return entity !=null ? EntityUtils.toString(entity) : null;
                    }else{
                        throw new ClientProtocolException("Unexpected response status: " + status);
                    }
                }
            };
            String responseBody = httpclient.execute(httppost,responseHandler);
            System.out.println("-------------------------------------------");
            System.out.println(responseBody);
            System.out.println("-------------------------------------------");
        }finally{
            httpclient.close();
        }
    }
    
    
    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;
        }
    }
    
}

时间: 2024-08-08 23:33:55

java https client信任所有证书的相关文章

iOS开发HTTPS实现之信任SSL证书和自签名证书

iOS开发HTTPS实现之信任SSL证书和自签名证书 转自:http://www.jianshu.com/p/6b9c8bd5005a/comments/5539345 (收录一下供自己学习用的) 字数1566 阅读5025 评论76 喜欢30 首先来分析一下什么是HTTPS以及了解HTTPS对于iOS开发者的意义 HTTPS 以及SSL/TSL 什么是SSL? SSL(Secure Sockets Layer, 安全套接字层),因为原先互联网上使用的 HTTP 协议是明文的,存在很多缺点,比如

java https tomcat 单双认证(含证书生成和代码实现) 原创转载请备注,谢谢O(∩_∩)O

server: apache-tomcat-6.0.44 jdk1.7.0_79client: jdk1.7.0_79 jks是JAVA的keytools证书工具支持的证书私钥格式. pfx是微软支持的私钥格式. cer是证书的公钥. 生成: keytool -genkey -alias tbb -keyalg RSA -keystore D:\cert\tbb.keystore 模板: keytool -genkey -alias yushan -keypass yushan -keyalg

[转]java 关于httpclient 请求https (如何绕过证书验证)

原文:http://www.blogjava.net/hector/archive/2012/10/23/390073.html 第一种方法,适用于httpclient4.X 里边有get和post两种方法供你发送请求使用. 导入证书发送请求的在这里就不说了,网上到处都是 import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamRea

android https遇到自签名证书/信任证书

对于CA机构颁发的证书Okhttp默认支持 可以直接访问 但是对于自定义的证书就不可以了(如:https ://kyfw.12306.cn/otn/), 需要加入Trust 下面分两部分来写,一是信任所有证书,二是信任指定证书,访问自签名的网站 一.信任所有证书 1. 在你的module 下 build.gradule里添加 dependencies { ... compile 'com.zhy:okhttputils:2.6.2' ...} 2.新建MyApplication public c

Java加密解密与数字证书的操作

1 keytool命令总结 一.创建数字证书 交互模式 使用默认的密钥库.keystore(文件夹是c: Documents and Settingusername)和算法(DSA) keytool -genkey 默认的别名mykey 密钥库中能够存放多个条目(公钥/私钥对和证书),它们在密钥库中以别名(alias)区分. [plain] view plaincopy keytool -genkey -alias mytest -keyalg RSA -keysize 1024 -keysto

httpclient信任所有证书解决SSLException:Unrecognized SSL message,plaintext connection

在使用 HttpClient 工具调用第三方 Http 接口时报错 javax.net.ssl.SSLException:Unrecognized SSL message,plaintext connection? 这个错误意思是说,无法识别 SSL 信息,明文连接? 看这个意思是说在使用 https 协议访问网络资源时无法识别 SSL 信息. SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层,最初是由网景公司(Netscape)研发,后被IETF(

Tomcat配置HTTPS方式生成安全证书

原文:http://www.cnblogs.com/visec479/p/4152827.html 在Tomcat 6中配置SSL双向认证是相当容易的,本文将介绍如何使用JDK的keytool来为Tomcat配置双向SSL认证.并实现批量生成证书 系统需求:JDK 5.0Tomcat 6.0.16启动命令行:第一步:为服务器生成证书 使用keytool为Tomcat生成证书,假定目标机器的域名是localhost或者"192.168.1.1",keystore文件存放在"D:

安装java memcached client到maven repository

由于目前java memcached client没有官方的maven repository可供使用,因此使用时需要手动将其安装到本地repository.java memcached client的jar包下载地址:https://github.com/gwhalin/Memcached-Java-Client/downloads 目前2.6.2版本的java memcached client要依赖slf4j-simple.slf4j-api.commons-pool三个包,依此我们可以为其编

Windows下Nginx配置SSL实现Https访问(包含证书生成)

Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https? HTTP全名超文本传输协议,客户端据此获取服务器上的超文本内容.超文本内容则以HTML为主,客户端拿到HTML内容后可根据规范进行解析呈现.因此,HTTP主要负责的是"内容的请求和获取".问题就出在这部分.行监控.劫持.阻挡等行为很容易导致网站泄密,一些关键参数比如登录密码开发者会在客户端