java https添加证书

添加证书:keytool -keystore "C:\Program Files\Java\jdkihu\jre\lib\security\cacerts" -importcert -alias ca12306 -file E:\srca12306\srca.cer
默认密码:changeit

查看证书:keytool -list -alias ca12306 -keystore "C:\Program Files\Java\jdkihu\jre\lib\security\cacerts"

删除证书:keytool -delete -alias ca12306 -keystore "C:\Program Files\Java\jdkihu\jre\lib\security\cacerts"

















































































java https访问总结的代码(不是都能用)

//	    /** 
//	     * 测试方法. 
//	     * @param args 
//	     * @throws Exception 
//	    */  
//	    public static void main(String[] args) throws Exception {  
//	        // 密码  
//	        String password = "changeit";  
//	        // 密钥库  
//	        String keyStorePath = "C:\\Program Files\\Java\\jdkihu\\jre\\lib\\security\\cacerts";  
//	        // 信任库  
//	        String trustStorePath = "C:\\Program Files\\Java\\jdkihu\\jre\\lib\\security\\cacerts";  
//	        // 本地起的https服务  
//	        String httpsUrl = spec;  
//	        // 传输文本  
//	        initHttpsURLConnection(password, keyStorePath, trustStorePath);  
//	        // 发起请求  
//	        get(httpsUrl);  
//	    }  
//	
//    /** 
//     * 初始化HttpsURLConnection. 
//     * @param password 
//     *            密码 
//     * @param keyStorePath 
//     *            密钥库路径 
//     * @param trustStorePath 
//     *            信任库路径 
//     * @throws Exception 
//     */  
//    public static void initHttpsURLConnection(String password,  
//            String keyStorePath, String trustStorePath) throws Exception {  
//        // 声明SSL上下文  
//        SSLContext sslContext = null;  
//        // 实例化主机名验证接口  
//        HostnameVerifier hnv = new MyHostnameVerifier();  
//        try {  
//            sslContext = getSSLContext(password, keyStorePath, trustStorePath);  
//        } catch (GeneralSecurityException e) {  
//            e.printStackTrace();  
//        }  
//        if (sslContext != null) {  
//            HttpsURLConnection.setDefaultSSLSocketFactory(sslContext  
//                    .getSocketFactory());  
//        }  
//        HttpsURLConnection.setDefaultHostnameVerifier(hnv);  
//    }
//    
//    /** 
//     * 获得SSLSocketFactory.
//     * @param password 
//     *            密码 
//     * @param keyStorePath 
//     *            密钥库路径 
//     * @param trustStorePath 
//     *            信任库路径 
//     * @return SSLSocketFactory 
//     * @throws Exception 
//     */
//    public static SSLContext getSSLContext(String password,  
//            String keyStorePath, String trustStorePath) throws Exception {  
//        // 实例化密钥库  
//        KeyManagerFactory keyManagerFactory = KeyManagerFactory  
//                .getInstance(KeyManagerFactory.getDefaultAlgorithm());  
//        // 获得密钥库  
//        KeyStore keyStore = getKeyStore(password, keyStorePath);  
//        // 初始化密钥工厂  
//        keyManagerFactory.init(keyStore, password.toCharArray());  
//  
//        // 实例化信任库  
//        TrustManagerFactory trustManagerFactory = TrustManagerFactory  
//                .getInstance(TrustManagerFactory.getDefaultAlgorithm());  
//        // 获得信任库  
//        KeyStore trustStore = getKeyStore(password, trustStorePath);  
//        // 初始化信任库  
//        trustManagerFactory.init(trustStore);  
//        // 实例化SSL上下文  
//        SSLContext ctx = SSLContext.getInstance("TLS");  
//        // 初始化SSL上下文  
//        ctx.init(keyManagerFactory.getKeyManagers(),  
//                trustManagerFactory.getTrustManagers(), null);  
//        // 获得SSLSocketFactory  
//        return ctx;  
//    }
//    /** 
//     * 获得KeyStore. 
//     * @param keyStorePath 
//     *            密钥库路径 
//     * @param password 
//     *            密码 
//     * @return 密钥库 
//     * @throws Exception 
//     */
//    public static KeyStore getKeyStore(String password, String keyStorePath)  
//            throws Exception {  
//        // 实例化密钥库  
        KeyStore ks = KeyStore.getInstance("JKS");  
//    	KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
//        // 获得密钥库文件流  
//        FileInputStream is = new FileInputStream(keyStorePath);  
//        // 加载密钥库  
//        ks.load(is, password.toCharArray());  
//        // 关闭密钥库文件流  
//        is.close();  
//        return ks;  
//    }
//    
//    /** 
//     * 发送请求. 
//     * @param httpsUrl 
//     *            请求的地址 
//     * @param xmlStr 
//     *            请求的数据 
//     */
//    public static void get(String httpsUrl) {  
//        HttpsURLConnection urlCon = null;  
//        try {  
//            urlCon = (HttpsURLConnection) (new URL(httpsUrl)).openConnection();  
//            urlCon.setDoInput(true);  
//            urlCon.setDoOutput(true);  
//            urlCon.setRequestMethod("HEAD");         
//            System.out.println(urlCon.getResponseCode());
            urlCon.setRequestMethod("POST");  
            urlCon.setRequestProperty("Content-Length",  
                    String.valueOf(xmlStr.getBytes().length));  
            urlCon.setUseCaches(false);  
            //设置为gbk可以解决服务器接收时读取的数据中文乱码问题  
            urlCon.getOutputStream().write(xmlStr.getBytes(charset));  
            urlCon.getOutputStream().flush();  
            urlCon.getOutputStream().close();  
            BufferedReader in = new BufferedReader(new InputStreamReader(  
                    urlCon.getInputStream()));  
            String line;  
            while ((line = in.readLine()) != null) {  
                System.out.println(line);  
            }  
//        } catch (MalformedURLException e) {  
//            e.printStackTrace();  
//        } catch (IOException e) {  
//            e.printStackTrace();  
//        } catch (Exception e) {  
//            e.printStackTrace();  
//        }  
//    } 
	
//	   public static void main(String[] args)
//	   {
//	        testIt();
//	   }
//	 
//	   private static void testIt(){
//	 
//	      String https_url = spec;
//	      URL url;
//	      try {
//	 
//		     url = new URL(https_url);
//		     HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
//	 
//		     //dumpl all cert info
//		     print_https_cert(con);
//	 
//		     //dump all the content
//		     print_content(con);
//	 
//	      } catch (MalformedURLException e) {
//		     e.printStackTrace();
//	      } catch (IOException e) {
//		     e.printStackTrace();
//	      }
//	 
//	   }
//	 
//	   private static void print_https_cert(HttpsURLConnection con){
//	 
//	    if(con!=null){
//	 
//	      try {
//	 
//		System.out.println("Response Code : " + con.getResponseCode());
//		System.out.println("Cipher Suite : " + con.getCipherSuite());
//		System.out.println("\n");
//	 
//		Certificate[] certs = con.getServerCertificates();
//		for(Certificate cert : certs){
//		   System.out.println("Cert Type : " + cert.getType());
//		   System.out.println("Cert Hash Code : " + cert.hashCode());
//		   System.out.println("Cert Public Key Algorithm : " 
//	                                    + cert.getPublicKey().getAlgorithm());
//		   System.out.println("Cert Public Key Format : " 
//	                                    + cert.getPublicKey().getFormat());
//		   System.out.println("\n");
//		}
//	 
//		} catch (SSLPeerUnverifiedException e) {
//			e.printStackTrace();
//		} catch (IOException e){
//			e.printStackTrace();
//		}
//	 
//	     }
//	 
//	   }
//	 
//	   private static void print_content(HttpsURLConnection con){
//		if(con!=null){
//	 
//		try {
//	 
//		   System.out.println("****** Content of the URL ********");			
//		   BufferedReader br = 
//			new BufferedReader(
//				new InputStreamReader(con.getInputStream()));
//	 
//		   String input;
//	 
//		   while ((input = br.readLine()) != null){
//		      System.out.println(input);
//		   }
//		   br.close();
//	 
//		} catch (IOException e) {
//		   e.printStackTrace();
//		}
//	 
//	       }
//	 
//	   }
//	public static void main(String[] args) throws Exception {
//	    URL url = new URL(spec);
//	    HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(new Proxy(
//				Proxy.Type.HTTP,new InetSocketAddress(proxyAddress,proxyPort)
//				));
	    SSLContext sc = SSLContext.getInstance("SSL");
	    TrustManager[] tmArr={new X509TrustManager(){
	        public void checkClientTrusted(X509Certificate[] paramArrayOfX509Certificate,String paramString) throws CertificateException{}
	        public void checkServerTrusted(X509Certificate[] paramArrayOfX509Certificate,String paramString) throws CertificateException {}
	        @Override
	        public java.security.cert.X509Certificate[] getAcceptedIssuers() {return null;}
			@Override
			public void checkClientTrusted(
					java.security.cert.X509Certificate[] arg0, String arg1)
					throws java.security.cert.CertificateException {
				// TODO Auto-generated method stub
				
			}
			@Override
			public void checkServerTrusted(
					java.security.cert.X509Certificate[] arg0, String arg1)
					throws java.security.cert.CertificateException {
				// TODO Auto-generated method stub
				
			}
	    }};
	    sc.init(null, tmArr, new SecureRandom());
	    conn.setSSLSocketFactory(sc.getSocketFactory());
	    conn.connect();
//	    try{
//	    	BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//	        String input;
//	        while ((input = br.readLine()) != null)
//	            System.out.println(input);
//	    } catch(Exception e){
//	    	
//	    }
//	}
package com.ticket;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLSession;

/** 
 * 实现用于主机名验证的基接口。  
 * 在握手期间,如果 URL 的主机名和服务器的标识主机名不匹配,则验证机制可以回调此接口的实现程序来确定是否应该允许此连接。 
 */  
public class MyHostnameVerifier implements HostnameVerifier {  
    @Override  
    public boolean verify(String hostname, SSLSession session) {  
//        if("localhost".equals(hostname)){  
//            return true;  
//        } else {  
//            return false;  
//        }  
    	 return true;
    }  
} 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值