keytool是java自帶的工具用於產生密鑰
keystore可以看成一個放key的庫,key就是公鑰,私鑰,數字簽名等組成的一個信息。
truststore是放信任的證書的一個store.
那他們之間有啥關系和聯系呢?在一個安全鏈接的模型中又各自起到什么作用呢?
其實我也沒搞太清楚-_-b
我先把目前的理解記下來,以后再慢慢修正
這篇主要針對的是web應用,web應用一般是通過https,ssl來做客戶端和server端的鏈接
就以單向驗證為例,服務器端的app server是tomcat
目前比較常用(我感覺是簡單)的安全方案是單向驗證,也就是說,客戶端IE會驗證服務器端的身份。這需要在服務器端做一些配置。
1. 在命令行中通過使用keytool在keystore中生成一個key.
這里就有兩個概念了,keystore和key
key,存放了數字證書(包括公鑰和發布者的數字簽名),以及私鑰
keystore,可以認為是放key的一個倉庫,以文件的形式存在系統中,默認是放在C:\Documents and Settings\user...\下,也可以在命令行中指定路徑和文件名
2.將key以數字證書的形式從keystore中導出,數字證書(包括公鑰和發布者的數字簽名)
3.將數字證書導入到truststore,一般是tomcat所用的JAVA_HOME下的jre\lib\security\cacerts文件
其實,truststore和keystore的性質是一樣的,都是存放key的一個倉庫,區別在於,truststore里存放的是只包含公鑰的數字證書,代表了可以信任的證書,而keystore是包含私鑰的。但是具體應用還有待深入研究,這里我還不是非常清楚
4.配置tomcat下的server.xml里相應的ssl端口,這樣客戶端就可以通過https來訪問server了