![](/img/trans.png)
[英]How to configure two way ssl on client and server on tomcat 7 using openssl for ssl certificate generation?
[英]Two Way SSL with openssl/java
我有一個Java客戶端應用程序,它希望以雙向SSL連接到服務器。 我創建了一對公鑰/私鑰。 公鑰名稱為key.cert ,私鑰名稱為key.pem 。 然后服務器端給我一個帶有server.cert名稱的公鑰。 我的問題是:
System.out.println("Connecting to " +IP + "port "
+ Port);
// load client private key
KeyStore clientKeys = KeyStore.getInstance("JKS");
clientKeys.load(
new FileInputStream(ProjectConfig
.getProperty("KeyStoreAndTrustStore")),
ProjectConfig.getProperty(
"KeyStoreAndTrustStorePassword")
.toCharArray());
KeyManagerFactory clientKeyManager = KeyManagerFactory
.getInstance("SunX509");
clientKeyManager.init(
clientKeys,
ProjectConfig.getProperty(
"KeyStoreAndTrustStorePassword")
.toCharArray());
// load server public key
KeyStore serverPub = KeyStore.getInstance("JKS");
serverPub.load(
new FileInputStream(ProjectConfig
.getProperty("KeyStoreAndTrustStore")),
ProjectConfig.getProperty(
"KeyStoreAndTrustStorePassword")
.toCharArray());
TrustManagerFactory trustManager = TrustManagerFactory
.getInstance("SunX509");
trustManager.init(serverPub);
// use keys to create SSLSoket
SSLContext ssl = SSLContext.getInstance("TLS");
ssl.init(clientKeyManager.getKeyManagers(),
trustManager.getTrustManagers(),
SecureRandom.getInstance("SHA1PRNG"));
sslClient = (SSLSocket) ssl.getSocketFactory().createSocket(
IP, Port);
sslClient.setSoTimeout(TimeOut);
System.out.println("connected to "
+ sslClient.getRemoteSocketAddress());
OutputStream outToServer = sslClient.getOutputStream();
out = new DataOutputStream(outToServer);
String contentToSend = ((String)Paylod);
out.writeUTF(contentToSend);
System.out.println(" sending data.... " + contentToSend);
InputStream inFromServer = sslClient.getInputStream();
in = new DataInputStream(inFromServer);
response = in.readUTF();
System.out.println("Server says.... " + response);
sslClient.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.