SSL编程
来源:互联网 发布:linux服务器管理面板 编辑:程序博客网 时间:2024/05/03 06:58
package jp.go.ssid.sss.common;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.KeyStore;
import java.security.Security;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.util.Iterator;
import javax.net.ssl.SSLSocketFactory;
import com.sun.net.ssl.HostnameVerifier;
import com.sun.net.ssl.HttpsURLConnection;
import com.sun.net.ssl.KeyManagerFactory;
import com.sun.net.ssl.SSLContext;
import com.sun.net.ssl.internal.ssl.Provider;
/**
* @author hy-he
*
* この生成されたコメントの挿入されるテンプレートを変更するため
* ウィンドウ > 設定 > Java > コード生成 > コードとコメント
*/
public class TestSSL {
public static void main(String[] args)throws Exception {
/*Tomcat.cer文件的路径*/
String cert_paper = "E:/eclipse2.1/workspace/shikaku/defaultroot/stub/tomcat.cer";
/** 验证keystore用的密码,此处与制作的时候输入的一致就行 */
String kpwd = "changeit";
/** 証明書のkeystore */
String kstore = "cert_kstore";
/** 要访问的URL */
String shujuURL;
URL urlRead = null;
/** HttpURLConnection */
HttpURLConnection hCon = null;
Security.addProvider(new Provider());
System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
FileInputStream ins = new FileInputStream(cert_paper);
CertificateFactory cerFactory = CertificateFactory.getInstance("X.509");
Iterator iter = cerFactory.generateCertificates(ins).iterator();
ins.close();
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(null, kpwd.toCharArray());
for (int index = 1; iter.hasNext(); index++) {
Certificate cert = (Certificate) iter.next();
keyStore.setCertificateEntry("" + index, cert);
}
OutputStream outStream = new BufferedOutputStream(new FileOutputStream(kstore));
keyStore.store(outStream, kpwd.toCharArray());
outStream.flush();
outStream.close();
java.security.Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
System.setProperty("javax.net.ssl.trustStore", kstore);
shujuURL = "https://localhost:8443/StubServ100?system_code=05";
urlRead = new URL(shujuURL);
hCon = (HttpURLConnection) urlRead.openConnection();
SSLContext ctx;
KeyManagerFactory kmf;
KeyStore ks;
char[] passphrase = kpwd.toCharArray();
kmf = KeyManagerFactory.getInstance("SunX509");
//ソケットプロトコルを実装するSSLContextを作成
ctx = SSLContext.getInstance("TLS");
ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(kstore), passphrase);
kmf.init(ks, passphrase);
//SSLContextを初期化
ctx.init(kmf.getKeyManagers(), null, null);
SSLSocketFactory sslsf = null;
//SSLContextのSocketFactoryを取得
sslsf = ctx.getSocketFactory();
//URLConnectionにSocketFactoryを設定
((HttpsURLConnection) hCon).setSSLSocketFactory(sslsf);
//ホスト名を無視させる
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String hostname, String certHostname) {
return true;
}
};
((HttpsURLConnection) hCon).setHostnameVerifier(hv);
BufferedReader br = new BufferedReader(new InputStreamReader(hCon.getInputStream(), "UTF-8"));
String line = "";
String xmldata = "";
//XMLデータをStringとして取得
while ((line = br.readLine()) != null) {
xmldata = xmldata + line;
}
br.close();
System.out.println(xmldata);
}
}
- SSL编程
- SSL编程
- SSL编程
- SSL编程
- HTTPS,SSL编程
- python socket ssl编程
- SSL/TLS编程
- SSL编程指南
- SSL编程(1) 概述
- java ssl编程
- python socket ssl编程
- python socket ssl编程
- SSL编程(3).NET实现SSL服务端
- SSL编程(3).NET实现SSL服务端
- 用openssl进行SSL编程
- 用openssl进行SSL编程
- 加密通讯协议SSL编程
- SSL编程- 简单函数介绍
- 是J2EE还是.Net,选择您的技术平台 -- Microsoft .NET与J2EE概述
- java 的jdom使用类(自家用)
- What is a Content Management System?
- 再论人与人的三大关系:生存关系、性关系和经济关系
- 对大学的几点看法
- SSL编程
- Makefile的经典教程
- 5天学会使用NoahWeb表现层制作动态网站(第三天)
- java的学习过程
- 2005-06-23我的BLOG正式开张营业了!^_^
- makefile学习[转载]
- SSL被访问的服务器端编程
- java.util.Stack翻译
- 依赖关系的注入问题