首先需要理解什么是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密码");