代码改变世界

keystore和truststore

2020-11-17 18:10  假面Wilson  阅读(2661)  评论(0编辑  收藏  举报

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