Java Keystore教程
目錄
1.簡介 2. SSL及其工作方式 3.私鑰 4.公開證書 5.根證書 6.證書頒發機構 7.證書鏈 8.使用Java keytool的密鑰庫 9.密鑰庫命令 10.在Apache Tomcat上使用密鑰庫和自簽名證書配置SSL1.簡介
我們誰沒有去ebay,亞馬遜買東西或他的個人銀行帳戶來檢查。 您是否認為這些站點足夠安全,可以存儲您的個人數據(信用卡號或銀行帳號等)?
這些站點中的大多數都使用套接字層(SSL)協議來保護其Internet應用程序。 SSL允許在傳輸之前對來自客戶端(例如Web瀏覽器)的數據進行加密,從而使試圖嗅探數據的人無法對其進行解密。
許多Java應用程序服務器和Web服務器都支持將密鑰庫用于SSL配置。 如果要構建安全的Java程序,那么學習構建密鑰庫是第一步。
2. SSL及其工作方式
客戶端始終使用HTTPS(而不是http://)開頭的URL發起基于HTTP的SSL連接。 在SSL會話開始時,將執行SSL握手。 該握手產生會話的密碼參數。 下圖顯示了如何處理SSL握手的簡化概述。
簡而言之,它是如何工作的:
SSL的世界實質上具有三種類型的證書:私鑰,公鑰(也稱為公共證書或站點證書)和根證書。
3.私鑰
私鑰包含服務器的身份信息以及密鑰值。 它應該保持此密鑰的安全并受密碼保護,因為它用于在握手期間協商哈希值。 有人可以使用它來解密流量并獲取您的個人信息。 就像將房門鑰匙留在門鎖中一樣。
4.公開證書
公共證書(公共密鑰)是提供給客戶的部分,就像您在機場出示護照時一樣。 與私有密鑰緊密相關的公共證書是使用證書簽名請求(CSR)從私有密鑰創建的。 創建私鑰后,您將創建一個CSR,該CSR被發送到您的證書頒發機構(CA)。 CA返回簽名的證書,其中包含有關服務器身份和CA的信息。
5.根證書
根CA證書是一個CA證書,它只是一個自簽名證書。 該證書代表簽發證書的實體,被稱為證書頒發機構或CA,例如VeriSign,Thawte等。
6.證書頒發機構
可以為您簽名證書的公司,例如VeriSign,Thawte,Commodo,GetTrust。 此外,許多公司和機構都通過自己從頭開始構建完整的實現,或者使用開源選項(例如OpenSSL)充當自己的CA。
7.證書鏈
當服務器和客戶端建立SSL連接時,會向客戶端提供一個證書。 客戶應確定是否信任此證書,此過程稱為證書鏈。 客戶端檢查證書的頒發者,搜索其受信任根證書的列表,并將呈現的證書上的頒發者與受信任證書的主題進行比較。
如果找到匹配項,則連接繼續。 如果不是,則Web瀏覽器可能會彈出一個對話框,警告您它不信任證書,并提供信任證書的選項。
8.使用Java keytool的密鑰庫
Java Keytool是密鑰和證書管理實用程序。 它允許用戶管理自己的公鑰/私鑰對和證書。 Java Keytool將密鑰和證書存儲在所謂的密鑰庫中 。 它使用密碼保護私鑰。
Java密鑰庫中的每個證書都與唯一的別名關聯。 創建Java密鑰庫時,您將首先創建.jks文件,該文件最初僅包含私鑰,然后生成CSR。 然后,您會將證書(包括所有根證書)導入密鑰庫。
9.密鑰庫命令
創建密鑰庫,密鑰和證書請求
- 生成Java密鑰庫和密鑰對 keytool -genkey -alias mydomain -keyalg RSA -keystore keystore.jks -storepass password
- 為現有的Java密鑰庫生成證書簽名請求(CSR) keytool -certreq -alias mydomain -keystore keystore.jks -storepass password -file mydomain.csr
- 生成密鑰庫和自簽名證書 keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360
進口證明書
- 將根或中間CA證書導入到現有的Java密鑰庫中
- 將簽名的主證書導入到現有的Java密鑰庫中 keytool -import -trustcacerts -alias mydomain -file mydomain.crt -keystore keystore.jks -storepass password
出口證明書
- 從密鑰庫導出證書 keytool -export -alias mydomain -file mydomain.crt -keystore keystore.jks -storepass password
檢查/列出/查看證書
- 檢查獨立證書 keytool -printcert -v -file mydomain.crt
- 檢查哪些證書在Java密鑰庫中 keytool -list -v -keystore keystore.jks -storepass password
- 使用別名檢查特定的密鑰庫條目 keytool -list -v -keystore keystore.jks -storepass password -alias mydomain
刪除證書
- 從Java Keytool密鑰庫中刪除證書 keytool -delete -alias mydomain -keystore keystore.jks -storepass password
修改密碼
- 更改Java密鑰庫密碼 keytool -storepasswd -new new_storepass -keystore keystore.jks -storepass password
- 更改私鑰密碼 keytool -keypasswd -alias client -keypass old_password -new new_password -keystore client.jks -storepass password
10.在Apache Tomcat上使用密鑰庫和自簽名證書配置SSL
- 使用此命令生成新的密鑰庫和自簽名證書,將提示您輸入特定信息,例如用戶名,組織單位,公司和位置。 keytool -genkey -alias tomcat -keyalg RSA -keystore /home/ashraf/Desktop/JavaCodeGeek/keystore.jks -validity 360
- 您可以列出使用此命令剛創建的證書詳細信息 keytool -list -keystore /home/ashraf/Desktop/JavaCodeGeek/keystore.jks
- 下載Tomcat 7
- 配置Tomcat的服務器以支持SSL或https連接。 在Tomcat \ conf \ server.xml中添加連接器元素 <Connector port="8443" maxThreads="150" scheme="https" secure="true" SSLEnabled="true" keystoreFile="/home/ashraf/Desktop/JavaCodeGeek/.keystore" keystorePass="password" clientAuth="false" keyAlias="tomcat" sslProtocol="TLS" />
- 啟動Tomcat并轉到https:// localhost:8443 / ,您將發現以下安全問題,瀏覽器將在其中顯示不受信任的錯誤消息。 就電子商務而言,此類錯誤消息會導致對網站立即失去信心,并且組織可能會失去大多數消費者的信心和業務,這很正常,因為您的證書尚未由Thawte或Verisign等CA簽署誰將驗證請求者的身份并簽發簽名證書。
- 您仍然可以單擊繼續,直到您收到簽名證書。
翻譯自: https://www.javacodegeeks.com/2014/07/java-keystore-tutorial.html
總結
以上是生活随笔為你收集整理的Java Keystore教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使命召唤电脑版本好玩(单机版使命召唤几好
- 下一篇: Java抽象– ULTIMATE教程(P