https证书问题

https用于绕过证书不对情况

import java.net.MalformedURLException;
import java.net.URL;
import java.security.cert.Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;

import com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl;

import sun.net.www.protocol.https.Handler;

public class TestHqm {
	
	
	
	public static void main(String[] args) throws Exception {
		String remoteURL = "https://member.test.com/efg/abc/receiveOrder.do" ;
		SSLSocketFactoryImpl  socketFactoryImp = null; 
		SSLSocketFactory  ssf= BZX509TrustManager.getSSFactory();  
		URL theURL = new URL(null, remoteURL, new Handler());
		HttpsURLConnection connection =  (HttpsURLConnection) theURL.openConnection();
		connection.setSSLSocketFactory(ssf);
		
		//System.out.println(socketFactoryImp);
		System.out.println("=================================================");
		//HostnameVerifier hostNamever = connection.getDefaultHostnameVerifier();
		//connection.setHostnameVerifier(new MyHostnameVerifier());
		
		//System.out.println(connection.getCipherSuite());
		
		connection.setDoInput(true);
		connection.setDoOutput(true);
		connection.setUseCaches(false);
		connection.setDefaultUseCaches(false);
		
		connection.setRequestMethod("POST");
		
		connection.connect();
		System.out.println("111");
	}
	
	
	
	private static class MyHostnameVerifier implements HostnameVerifier {
		public boolean verify(String hostname, SSLSession session) {
			
			try {
				Certificate[] certs = session.getPeerCertificates();
				for (Certificate cer : certs) {
					System.out.println(cer.toString());
				}
			} catch (SSLPeerUnverifiedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//return hostname.equals(session.getPeerHost());
			return true;
		}
	}
}
import java.security.KeyManagementException;  
import java.security.NoSuchAlgorithmException;  
import java.security.NoSuchProviderException;  
import java.security.cert.CertificateException;  
import java.security.cert.X509Certificate;  
  
import javax.net.ssl.SSLContext;  
import javax.net.ssl.SSLSocketFactory;  
import javax.net.ssl.TrustManager;  
import javax.net.ssl.X509TrustManager;  
public class BZX509TrustManager   implements X509TrustManager {  
  
    public BZX509TrustManager(){}  
    @Override  
    public void checkClientTrusted(X509Certificate[] arg0, String arg1)  
            throws CertificateException {  
        // TODO Auto-generated method stub  
    	System.out.println("checkClientTrusted");
          
    }  
  
    @Override  
    public void checkServerTrusted(X509Certificate[] arg0, String arg1)  
            throws CertificateException {  
        System.out.println(arg0[0]);
          
    }  
  
    @Override  
    public X509Certificate[] getAcceptedIssuers() {  
        // TODO Auto-generated method stub  
        return null;  
    }  
      
    public static SSLSocketFactory getSSFactory() throws NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException{  
        TrustManager[] tm = { new BZX509TrustManager()};  
        SSLContext sslContext = SSLContext.getInstance("SSL", "SunJSSE");  
       
        sslContext.init(null, tm, new java.security.SecureRandom());  
        SSLSocketFactory ssf = sslContext.getSocketFactory();  
       
        return  ssf;  
    }  
}  

猜你喜欢

转载自liuna718-163-com.iteye.com/blog/2390755