zoukankan      html  css  js  c++  java
  • java 主动信任证书

    java 主动信任证书

    SSLContext sslcontext = SSLContexts.custom().loadKeyMaterial(keyStore, mid.toCharArray()).loadTrustMaterial(keyStore, new TrustStrategy() {
        // 信任所有
        public boolean isTrusted(java.security.cert.X509Certificate[] chain, String authType) {
            return true;
        }
    }).build();
    
    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslcontext, new String[] { "TLSv1" },
                null, SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

    包: https://files.cnblogs.com/files/xiluhua/httpclient-4.3.3.zip

    完整代码:

    package com.taiping.dianshang.payment.service.wechat.fromWechat;
    
    import java.security.cert.CertificateException;
    import java.security.cert.X509Certificate;
    import java.util.Map;
    
    import javax.net.ssl.SSLContext;
    import javax.net.ssl.TrustManager;
    import javax.net.ssl.X509TrustManager;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpHost;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.conn.ClientConnectionManager;
    import org.apache.http.conn.params.ConnRoutePNames;
    import org.apache.http.conn.scheme.Scheme;
    import org.apache.http.conn.scheme.SchemeRegistry;
    import org.apache.http.conn.ssl.SSLSocketFactory;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.springframework.stereotype.Component;
    
    import com.taiping.dianshang.constant.ConstantTool;
    import com.taiping.facility.cache.container.CacheContainer;
    import com.taiping.facility.tool.FileStreamTool;
    import com.taiping.facility.tool.LogTool;
    import com.taiping.facility.tool.MapTool;
    import com.taiping.facility.tool.PropertyFileTool;
    
    /**
     * 
     * @author xilh
     * @since 20200409
     */
    @Component
    public class HttpclientImpl_ssl {
    
    	/**
    	 * @author xilh
    	 * @since 20200324
    	 */
    	@SuppressWarnings({ "unchecked", "deprecation" })
    	public String post(String url, Object obj, Map<String, Object> httpclientParams) throws Exception {
    		HttpPost httpPost = null;
    		String responseMsg = null;
    		Map<String, Object> map  = (Map<String, Object>)obj;
    		String trans = MapTool.getStringFromMap(map, "trans");
    		String packet = MapTool.getStringFromMap(map, "packet");
    		
    		DefaultHttpClient httpclient = new DefaultHttpClient();
    		// 代理的设置  
    		String value = CacheContainer.getSystemParameterValue("internet.proxy");
    		if (LogTool.isLocal) {
    			value = PropertyFileTool.get("internet.proxy");
    		}
    		LogTool.info(this.getClass(), trans+", proxy: "+value);
    		String[] arr = value.split(":");
            HttpHost proxy = new HttpHost(arr[0], Integer.valueOf(arr[1]));
            httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    		
    		try {
    			// Secure Protocol implementation.
    			SSLContext ctx = SSLContext.getInstance("TLS");
    			// 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, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
    			ClientConnectionManager ccm = httpclient.getConnectionManager();
    			// register https protocol in httpclient's scheme registry
    			SchemeRegistry sr = ccm.getSchemeRegistry();
    			sr.register(new Scheme("https", 443, ssf));
    			httpclient = new DefaultHttpClient(ccm, httpclient.getParams());
    			// String auth = CacheContainer.getSysParamValue("authorization.token.18", true);
    			// appKey :"TPJJ"     appSecret: "yMJlPH9RnjxpqhyysxaIXYT82U1Sh32q"
    			//装配post请求参数
    			httpPost = new HttpPost(url);
    			httpPost.setHeader("Content-Type","application/json;charset=UTF-8");  
    //	        List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>();
    //	        list.add(new BasicNameValuePair("appKey", "TPJJ"));
    //	        list.add(new BasicNameValuePair("appSecret", "yMJlPH9RnjxpqhyysxaIXYT82U1Sh32q"));
    //	        list.add(new BasicNameValuePair("tokenExpireDay", "7"));
    	        httpPost.setEntity(new StringEntity((String)packet,"application/json", ConstantTool.UTF8));
    			HttpResponse response = httpclient.execute(httpPost);
    
    			HttpEntity entity = response.getEntity();
    			byte buffer[] = FileStreamTool.read(entity.getContent());
    			LogTool.info(this.getClass(), trans+", buffer size: "+buffer.length);
    			if (buffer != null && buffer.length > 0) {
    				responseMsg = new String(buffer, ConstantTool.UTF8);
    			}
    			LogTool.info(this.getClass(), trans+", responseMsg: "+responseMsg);
    			System.out.println();
    		} catch (Exception e) {
    			LogTool.error(this.getClass(), e);
    		} finally{
    			if (httpPost != null) {
    				// 关闭请求
    				httpPost.releaseConnection();
    			}
    		}
    
    		return responseMsg;
    	}
    	
    }
    

      

  • 相关阅读:
    [na]ip数据包格式
    [js]浏览器同源策略(same-origin policy)
    [sql] 同库表(结构)的备份和sql聚合&navicat使用
    [svc]tcp三次握手四次挥手&tcp的11种状态(半连接)&tcp的time-wait
    [svc]ip地址划分
    [css]单/多行居中&字体设置
    时间戳转为C#格式时间
    windows 8 中 使用 httpclient
    oralce 查看是否启动 登陆 创建用户 常用命令小记
    SQL递归查询(with cte as)
  • 原文地址:https://www.cnblogs.com/xiluhua/p/11763551.html
Copyright © 2011-2022 走看看