您需要一个证书来建立ssl连接,您可以在密钥库中加载证书,也可以加载证书本身。我将显示一些有关keystore选项的示例。
您的代码需要一些参数才能运行:
java -Djavax.net.ssl.keyStore=keyStoreFile -Djavax.net.ssl.keyStorePassword=keystorePassword Server
您还可以使用Java代码加载密钥库,最简单的解决方案是设置系统属性:
System.setProperty("javax.net.ssl.keyStore", 'keystoreFile');System.setProperty("javax.net.ssl.keyStorePassword", 'keystorePassword ');另外,您还可以用其他方式加载密钥库,这更加复杂,但是您可以执行更复杂的操作:
KeyStore ks = KeyStore.getInstance("JKS");ks.load(new FileInputStream("keystoreFile"), "keystorePassword".toCharArray());KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");kmf.init(ks, "keystorePassword".toCharArray());TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509"); tmf.init(ks);SSLContext sc = SSLContext.getInstance("TLS"); TrustManager[] trustManagers = tmf.getTrustManagers(); sc.init(kmf.getKeyManagers(), trustManagers, null);SSLServerSocketFactory ssf = sc.getServerSocketFactory(); SSLServerSocket s = (SSLServerSocket) ssf.createServerSocket(serverport);SSLSocket c = (SSLSocket) s.accept();对于客户,最后几行代码有一些更改,最后三行将替换为:
SSLSocketFactory ssf = sc.getSocketFactory(); SSLSocket s = (SSLSocket) ssf.createSocket(serverip, serverport);s.startHandshake();
如果要为Android加载密钥库,则类型必须为“ BKS”,而不是“ JKS”。您可以轻松找到用于创建密钥库的资源。



