在命令列指定使用的keystore, client端:

java -Djavax.net.ssl.trustStore=mykeystore -Djavax.net.ssl.trustStorePassword=123456 Client

server端:

java -Djavax.net.ssl.keyStore=mykeystore -Djavax.net.ssl.keyStorePassword=123456 Server

在程式中設定使用的keystore:

char[] passphrase = "123456".toCharArray();

KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream("mykeystore"), passphrase);

KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, passphrase);

TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf.init(ks);

SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);

// client端
Socket socket = ctx.getServerSocketFactory().createServerSocket(port);
// server端
ServerSocket serverSocket = ctx.getSocketFactory().createSocket("hostname", port);
文章標籤
全站熱搜
創作者介紹
創作者 Forth 的頭像
Forth

不就是個blog

Forth 發表在 痞客邦 留言(0) 人氣(67)