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