首先须要懂得什么是keystore,keystore是存储密钥(公钥、私钥)的容器。
keystore和truststore其本质都是keystore。只不过二者盛放的密钥所有者不合罢了,对于keystore一般存储本身的私钥和公钥,而truststore则用来存储本身信赖的对象的公钥。举例申明:
1.单向认证:
由于单向认证是客户端去验证服务器端的真伪性,所以须要将服务器端的证书server.crt导出,导出的server.crt就是器端的公钥。然后将 server.crt导入到客户端的truststore中,这样服务器就被客服端信赖了,连接时客户端应用服务器端的公钥去验证服务器。
2.双向认证:
服务器的公钥导入到客户端的truststore,客户端的公钥导入到服务器端的truststore中。
实际代码中如何指定本身的truststore呢?
System.setProperty("javax.net.ssl.trustStore", "truststore的绝对路径或者相对路径");
System.setProperty("javax.net.ssl.trustStorePassword", "truststore暗码");