package com;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.TrustManagerFactory;
public class SSLClient {
private static final String SERVER_HOST = "127.0.0.1";
private static final int SERVER_PORT = 12120;
private static final String CLIENT_KEYSTORE_PWD = "12345678";
private static final String CLIENT_TRUST_KEYSTORE_PWD = "12345678";
SSLSocket clientSocket;
public SSLClient(){
// Initialize SSLClient
try {
//Load KeyStore And TrustKeyStore
KeyStore keyStore = KeyStore.getInstance("JKS");
KeyStore trustKeyStore = KeyStore.getInstance("JKS");
try {
keyStore.load(new FileInputStream(
"./src/keyOfClient.keystore"),
CLIENT_KEYSTORE_PWD.toCharArray());
trustKeyStore.load(new FileInputStream(
"./src/trustOfClient.keystore"),
CLIENT_TRUST_KEYSTORE_PWD.toCharArray());
} catch (CertificateException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//Initialize KeyStore Factory
KeyManagerFactory keyManagerFactory =
KeyManagerFactory.getInstance("SunX509");
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance("SunX509");
try {
keyManagerFactory.init(keyStore, CLIENT_KEYSTORE_PWD.toCharArray());
} catch (UnrecoverableKeyException e) {
e.printStackTrace();
}
trustManagerFactory.init(trustKeyStore);
//Initialize SSLContext
SSLContext context = SSLContext.getInstance("SSL");
try {
context.init(keyManagerFactory.getKeyManagers(),
trustManagerFactory.getTrustManagers(), null);
} catch (KeyManagementException e) {
e.printStackTrace();
}
//Set up Client Socket
try {
clientSocket = (SSLSocket) context.
getSocketFactory().createSocket(SERVER_HOST, SERVER_PORT);
} catch (IOException e) {
e.printStackTrace();
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (KeyStoreException e) {
e.printStackTrace();
}
}
private void Test() {
if(clientSocket == null){
System.out.println("NULL clientSocket");
return;
}
// Run Client Test
InputStream input = null;
OutputStream output = null;
try {
input = clientSocket.getInputStream();
output = clientSocket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
//Output Message To Server
BufferedOutputStream bufferedOutput = new BufferedOutputStream(output);
try {
//output to Server
bufferedOutput.write("Client Test Running".getBytes());
bufferedOutput.flush();
} catch (IOException e) {
e.printStackTrace();
}
//Output To Client Console
try {
System.out.println(new String(StreamToByteArray(input)));
} catch (IOException e) {
e.printStackTrace();
}
try {
Thread.sleep(3000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
// //close client socket
// try {
// clientSocket.close();
// } catch (IOException e) {
// e.printStackTrace();
// }
}
/**
* convert stream to Byte Array
* @param inputStream
* @return
* @throws IOException
*/
public byte[] StreamToByteArray(InputStream inputStream) throws IOException {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int readIndex = inputStream.read(buffer);
bout.write(buffer, 0, readIndex);
bout.flush();
bout.close();
inputStream.close();
return bout.toByteArray();
}
public static void main(String[] args) {
new SSLClient().Test();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
客户端与服务器SSL双向认证(客户端:java-服务端:java)
共15个文件
keystore:8个
class:2个
java:2个
5星 · 超过95%的资源 需积分: 47 216 下载量 88 浏览量
2013-04-23
13:57:16
上传
评论 5
收藏 16KB RAR 举报
温馨提示
客户端与服务器SSL双向认证(客户端:java-服务端:java):详细的过程,注意事项,运行成功!
资源推荐
资源详情
资源评论
收起资源包目录
SSLTest.rar (15个子文件)
SSLTest
bin
keyOfServer.keystore 1KB
trustOfClient.keystore 801B
com
SSLClient.class 5KB
SSLServer.class 5KB
trustOfServer.keystore 802B
keyOfClient.keystore 1KB
.settings
org.eclipse.jdt.core.prefs 598B
src
keyOfServer.keystore 1KB
trustOfClient.keystore 801B
com
SSLServer.java 4KB
SSLClient.java 4KB
trustOfServer.keystore 802B
keyOfClient.keystore 1KB
.project 383B
.classpath 407B
共 15 条
- 1
北海鲲鹏
- 粉丝: 13
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页