【Java 安全技術探索之路系列:J2SE安全架構】之六:安全管理工具
阿新 • • 發佈:2019-01-07
【Java 安全技術探索之路系列:J2SE安全架構】章節列表
作為J2SE複合包的一部分,Java2平臺提供了一組工具來管理安全策略、建立金鑰、管理金鑰和證書、簽署JAR檔案、驗證簽名以及支援金鑰管理相關的其他功能。
一 keystore
金鑰庫是一個受保護的資料庫,儲存了金鑰及金鑰的可信證書項。金鑰庫的結構如下圖所示:
下面來介紹相關工具的使用。
二 keytool
Keytool是用於管理金鑰和證書的工具,使使用者能管理自己的公/私鑰對以及相關的證書。keytool主要用於認證服務和使用數字簽名驗證資料的完整性。keytool工具使用X.509證書標準。該標準使用:
- 抽象語法標記(Abstract Syntax Notation 1):描述證書資料.
- 明確編碼規則(Definite Encoding Rules):指定資訊如何儲存和傳輸。
- 可辨別名稱(Distinguished Name):描述持有者和頒發者欄位的值。
j2SE複合包使用命令列工具的形式提供keytool工具。相關命令如下所示:
下面演示一下如何使用這些命令:
2.1 使用keytool生成金鑰對
keytool -genkey -alias myalias -keyalg RSA -keystore mykeystore -keypass mykeypass -storepass mystorepass
執行該命令後,會出現以下介面,逐一回答即可。
回答完成後會在當前目錄生成mykeystore檔案,該檔案是加密檔案,無法直接開啟。
2.2 金鑰庫相關操作
2.2.1 檢視金鑰庫中的項
keytool -list -keystore mykeystore
輸入密碼:mykeystorepass,即可檢視金鑰庫中的項,如下圖所示:
keytool -list -v -keystore mykeystore
-v選項,證書會以人類可讀的格式顯示,如下圖所示:
-rfc選項,證書會以Base64編碼格式顯示證書,如下圖所示:
2.2.2 從金鑰庫匯出證書
keytool -export -alias myalias -file mycertificate.cer -keystore mykeystore
輸入命令後,會提示輸入金鑰庫口令,如下圖所示:
輸入口令後,會在命令行當前目錄生成證書檔案,如下圖所示:
2.2.3 匯入證書到金鑰庫
keytool -import -alias myclientalias -file mycertificate.cer -keypass clientkeypass -keystore clientstore -storepass clientpass
執行命令,即可匯入證書,如下圖所示:
2.2.4 修改金鑰庫密碼
keytool -storepasswd -new newstorepass -keystore mykeystore -storepass mystorepass
2.3 證書相關操作
2.3.1 顯示證書內容
keytool -printcert -file mycertificate.cer
執行命令後,顯示證書資訊,如下圖所示:
2.3.2 建立證書籤發請求
keytool -certReq -keystore mykeystore -file myCSR.csr -alias mycsralias
三 policytool
輸入命令
policytool
介面如下圖所示:
四 jarsigner
jarsigner工具用於對JAR檔案進行數字簽名並驗證JAR檔案的簽名和檔案的的完整性。相關操作命令如下圖所示:
4.1 JAR檔案簽名
下面演示了為myJar.jar簽名,並將簽名後的JAR檔案命名為mySignedJar.jar過程。
jarsigner -keystore C:\Users\Administrator\mykeystore -storepass mystorepass -keypass mykeypass -signedjar mySignedJar.jar myJar.jar myalias
執行命令後,會顯示命令成功,如下圖所示:
3.2 驗證簽名後的JAR檔案
jarsigner -keystore C:\Users\Administrator\mykeystore -verify -certs mySignedJar.jar