keystore 與 trust store 的區別 及 keytool 常用命令


本文為博主原創,未經允許不得轉載:

  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。會提示網站證書不受信任,需要手動點擊確定。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM