本文為博主原創,未經允許不得轉載:
1. key store 與 trust store 區別
2. java 配置 單向認證與雙向認證的過程
3. key store 與 trust store 常用命令
4. tomcat , zookeeper 配置 雙向認證過程
1. key store 與 trust store 區別
keystore是存儲密鑰(公鑰、私鑰)的容器。
keystore和truststore其本質都是keystore。只不過二者存放的密鑰所有者不同而已。本質都是相同的文件,只不過約定通過文件名稱區分類型以及用途
對於keystore一般存儲自己的私鑰和公鑰,而truststore則用來存儲自己信任的對象的公鑰。
2. 單向認證與雙向認證
單向認證:
單向認證是客戶端驗證服務端的真偽性,所以需要將服務器端的證書server.crt導出,導出的server.crt就是服務器端的公鑰。然后將 server.crt 導入到客戶端的 trustore 中。這樣服務器就被客戶端信任了,連接時客戶端使用服務器端的公鑰去驗證服務器。
雙向認證:
服務器的公鑰導入到客戶端的truststore,客戶端的公鑰導入到服務器端的truststore中。
客戶端請求服務器端,服務器端通過預置有客戶端證書的 trust store 驗證客戶端的證書,如果證書被信任,則驗證通過
服務器端響應客戶端,客戶端通過預置有服務端證書的 trust store 驗證服務端的證書,如果證書被信任,則驗證通過,完成一個雙向認證過程。
java 在jdk 中已經默認在 $JAVA_HOME/lib/security/cacerts 這個文件中預置了常用的 證書

3. key store 與 trust store 常用的命令:
3.1 創建證書
keytool -genkeypair -alias "test1" -keyalg "RSA" -keystore test.keystore.jks
-genkeypair:生成一對非對稱密鑰;
-alias:指定密鑰對的別名,該別名是公開的;
-keyalg:指定加密算法,本例中的采用通用的RAS加密算法;
-keystore:密鑰庫的路徑及名稱,不指定的話,默認在操作系統的用戶目錄下生成一個".keystore"的文件
3.2 查看 Keystore 的內容
keytool -list -v -keystore test.keystore.jks
3.3 添加一個信任根證書到keystore文件
keytool -import -alias newroot -file root.crt -keystore test.keystore.jks
3.4 導出 jks 的證書文件到指定文件
keytool -export -alias alias_name -keystore test.keystore.jks -rfc -file test.cer
3.5 刪除jks 中指定別名的證書
keytool -delete -keystore test.keystore.jks -alias alias_name
4. tomcat 配置 ssl 認證
打開server.xml,找到
<!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> -->
這樣一段注釋,在這段注釋下面添加如下一段代碼:
<Connector SSLEnabled="true" acceptCount="100" clientAuth="false" disableUploadTimeout="true" enableLookups="false" maxThreads="25" port="8443" keystoreFile="D:\developTools\apache-tomcat-idm\tomcat.keystore" keystorePass="111111" protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" secure="true" sslProtocol="TLS" />
其中clientAuth=”false”表示是SSL單向認證,即服務端認證,port=”8443”是https的訪問端口,keystoreFile="D:\developTools\apache-tomcat-idm\tomcat.keystore"是第一步中生成的keystore的保存路徑,keystorePass="111111"是第一步生成的keystore的密碼。
為了驗證是否已經配置正確,我們可以在瀏覽器中進行驗證。首先啟動tomcat,然后在瀏覽器地址輸入欄中輸入:https://localhost:8443。會提示網站證書不受信任,需要手動點擊確定。
