在命令列指定使用的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);文章標籤
全站熱搜
