keytool工具應用實例詳解

Keytool是一個Java數據證書的管理工具。

 

keystore

Keytool將密鑰(key)和證書(certificates)存在一個稱爲keystore的文件中

keystore裏,包含兩種數據: 密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(採用非對稱加密)

可信任的證書實體(trusted certificate entries)——只包含公鑰

 

Alias(別名)

每個keystore都關聯這一個獨一無二的alias這個alias通常不區分大小寫

 

keystore的存儲位置

在沒有制定生成位置的情況下,keystore會存在與用戶的系統默認目錄,

如:對於window xp系統,會生成在系統的C:\Documents and Settings\UserName\

文件名爲“.keystore

 

keystore的生成

引用

keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore -dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN" -keypass changeit -storepass -validity 180

 

參數說明:

-genkey表示要創建一個新的密鑰

-dname表示密鑰的Distinguished Names

CN=commonName

OU=organizationUnit

O=organizationName

L=localityName

S=stateName

C=country

Distinguished Names表明了密鑰的發行者身份

-keyalg使用加密的算法,這裏是RSA

-alias密鑰的別名

-keypass私有密鑰的密碼,這裏設置爲changeit

-keystore 密鑰保存在D:盤目錄下的mykeystore文件中

-storepass 存取密碼,這裏設置爲changeit,這個密碼提供系統從mykeystore文件中將信息取出

-validity該密鑰的有效期爲 180 (默認爲90)

 

cacerts證書文件(The cacerts Certificates File)

該證書文件存在於java.home\jre\lib\security目錄下,是Java系統的CA證書倉庫

 

創建證書

1.服務器中生成證書(注:生成證書時,CN要和服務器的域名相同,如果在本地測試,則使用localhost)

keytool -genkey -alias tomcat -keyalg RSA -keystore d:\mykeystore-dname "CN=localhost, OU=localhost, O=localhost, L=SH, ST=SH, C=CN"-keypass changeit -storepass changeit

2.導出證書,由客戶端安裝:

keytool -export -alias tomcat -keystore d:\mykeystore -file d:\mycerts.cer -storepass changeit

3.客戶端配置:爲客戶端的JVM導入密鑰(將服務器下發的證書導入到JVM)

keytool -import -trustcacerts -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts " -file d:\mycerts.cer -storepass changeit

生成的證書可以交付客戶端用戶使用,用以進行SSL通訊,或者伴隨電子簽名的jar包進行發佈者的身份認證。

常出現的異常:“未找到可信任的證書”--主要原因爲在客戶端未將服務器下發的證書導入到JVM中,可以用

keytool -list -alias tomcat -keystore "%JAVA_HOME%/JRE/LIB/SECURITY/CACERTS" -storepass changeit

linux: #keytool -list -alias tomcat -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit

來查看證書是否真的導入到JVM中。

keytool生成根證書時出現如下錯誤:

keytool錯誤:java.io.IOException:keystore was tampered with,or password was incorrect

原因是在你的home目錄下是否還有.keystore存在。如果存在那麼把他刪除掉,然後再執行

或者刪除"%JAVA_HOME%/jre/lib/security/cacerts 再執行


數字證書中keytool命令使用說明
這個命令一般在JDK\jre\lib\security\目錄下操作 
keytool常用命令 
-alias       產生別名 
-keystore    指定密鑰庫的名稱(就像數據庫一樣的證書庫,可以有很多個證書,cacerts這個文件是jre自帶的, 
             你也可以使用其它文件名字,如果沒有這個文件名字,它會創建這樣一個) 
-storepass   指定密鑰庫的密碼 
-keypass     指定別名條目的密碼 
-list        顯示密鑰庫中的證書信息 
-v           顯示密鑰庫中的證書詳細信息 
-export      將別名指定的證書導出到文件 
-file        參數指定導出到文件的文件名 
-delete      刪除密鑰庫中某條目 
-import      將已簽名數字證書導入密鑰庫 
-keypasswd   修改密鑰庫中指定條目口令 
-dname       指定證書擁有者信息 
-keyalg      指定密鑰的算法 
-validity    指定創建的證書有效期多少天 
-keysize     指定密鑰長度 

使用說明: 
導入一個證書命令可以如下: 
keytool -import -keystore cacerts -storepass 666666 -keypass 888888 -alias alibabacert -file C:\alibabajava\cert\test_root.cer 
其中-keystore cacerts中的cacerts是jre中默認的證書庫名字,也可以使用其它名字 
-storepass 666666中的666666是這個證書庫的密碼 
-keypass 888888中的888888是這個特定證書的密碼 
-alias alibabacert中的alibabacert是你導入證書的別名,在其它操作命令中就可以使用它 
-file C:\alibabajava\cert\test_root.cer中的文件路徑就是要導入證書的路徑 

瀏覽證書庫裏面的證書信息,可以使用如下命令: 
keytool -list -v -alias alibabacert -keystore cacerts -storepass 666666 

要刪除證書庫裏面的某個證書,可以使用如下命令: 
keytool -delete -alias alibabacert -keystore cacerts -storepass 666666 

要導出證書庫裏面的某個證書,可以使用如下命令: 
keytool -export -keystore cacerts -storepass 666666 -alias alibabacert -file F:\alibabacert_root.cer 
要修改某個證書的密碼(注意:有些數字認證沒有私有密碼,只有公匙,這種情況此命令無效) 
這個是交互式的,在輸入命令後,會要求你輸入密碼 
keytool -keypasswd -alias alibabacert -keystore cacerts 
這個不是交互式的,輸入命令後直接更改 
Keytool -keypasswd -alias alibabacert -keypass 888888 -new 123456 -storepass 666666 -keystore cacerts


Keytool 是一個Java 數據證書的管理工具 ,Keytool 將密鑰(key)和證書(certificates)存在一個稱爲keystore的文件中 在keystore裏,包含兩種數據: 
密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(採用非對稱加密) 
可信任的證書實體(trusted certificate entries)——只包含公鑰


ailas(別名)每個keystore都關聯這一個獨一無二的alias,這個alias通常不區分大小寫

 

JDK中keytool 常用命令: 

-genkey      在用戶主目錄中創建一個默認文件".keystore",還會產生一個mykey的別名,mykey中包含用戶的公鑰、私鑰和證書
(在沒有指定生成位置的情況下,keystore會存在用戶系統默認目錄,如:對於window xp系統,會生成在系統的C:/Documents and Settings/UserName/文件名爲“.keystore”)
-alias       產生別名
-keystore    指定密鑰庫的名稱(產生的各類信息將不在.keystore文件中)
-keyalg      指定密鑰的算法 (如 RSA  DSA(如果不指定默認採用DSA))
-validity    指定創建的證書有效期多少天
-keysize     指定密鑰長度
-storepass   指定密鑰庫的密碼(獲取keystore信息所需的密碼)
-keypass     指定別名條目的密碼(私鑰的密碼)
-dname       指定證書擁有者信息 例如:  "CN=名字與姓氏,OU=組織單位名稱,O=組織名稱,L=城市或區域名稱,ST=州或省份名稱,C=單位的兩字母國家代碼"
-list        顯示密鑰庫中的證書信息      keytool -list -v -keystore 指定keystore -storepass 密碼
-v           顯示密鑰庫中的證書詳細信息
-export      將別名指定的證書導出到文件  keytool -export -alias 需要導出的別名 -keystore 指定keystore -file 指定導出的證書位置及證書名稱 -storepass 密碼
-file        參數指定導出到文件的文件名
-delete      刪除密鑰庫中某條目          keytool -delete -alias 指定需刪除的別  -keystore 指定keystore  -storepass 密碼
-printcert   查看導出的證書信息          keytool -printcert -file yushan.crt
-keypasswd   修改密鑰庫中指定條目口令    keytool -keypasswd -alias 需修改的別名 -keypass 舊密碼 -new  新密碼  -storepass keystore密碼  -keystore sage
-storepasswd 修改keystore口令      keytool -storepasswd -keystore e:/yushan.keystore(需修改口令的keystore) -storepass 123456(原始密碼) -new yushan(新密碼)
-import      將已簽名數字證書導入密鑰庫  keytool -import -alias 指定導入條目的別名 -keystore 指定keystore -file 需導入的證書

 

下面是各選項的缺省值。 
-alias "mykey"

-keyalg "DSA"

-keysize 1024

-validity 90

-keystore 用戶宿主目錄中名爲 .keystore 的文件

-file 讀時爲標準輸入,寫時爲標準輸出
 
           


1、keystore的生成: 

分階段生成:
     keytool -genkey -alias yushan(別名) -keypass yushan(別名密碼) -keyalg RSA(算法) -keysize 1024(密鑰長度) -validity 365(有效期,天單位) -keystore         

e:/yushan.keystore(指定生成證書的位置和證書名稱) -storepass 123456(獲取keystore信息的密碼);回車輸入相關信息即可;
     
一次性生成:
     keytool -genkey -alias yushan -keypass yushan -keyalg RSA -keysize 1024 -validity 365 -keystore  e:/yushan.keystore -storepass 123456 -dname "CN=(名字與

姓氏), OU=(組織單位名稱), O=(組織名稱), L=(城市或區域名稱), ST=(州或省份名稱), C=(單位的兩字母國家代碼)";(中英文即可)

2、keystore信息的查看: 
   keytool -list  -v -keystore e:/keytool /yushan.keystore -storepass 123456
   顯示內容:
---------------------------------------------------------------------
   Keystore 類型: JKS
Keystore 提供者: SUN

您的 keystore 包含 1 輸入

別名名稱: yushan
創建日期: 2009-7-29
項類型: PrivateKeyEntry
認證鏈長度: 1
認證 [1]:
所有者:CN=yushan, OU=xx公司, O=xx協會, L=湘潭, ST=湖南, C=中國
簽發人:CN=yushan, OU=xx公司, O=xx協會, L=湘潭, ST=湖南, C=中國
序列號:4a6f29ed
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
證書指紋:
         MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
         SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
         簽名算法名稱:SHA1withRSA
         版本: 3
--------------------------------------------------------------------

 

缺省情況下,-list 命令打印證書的 MD5 指紋。而如果指定了 -v 選項,將以可讀格式打印證書,如果指定了 -rfc 選項,將以可打印的編碼格式輸出證書。


keytool -list  -rfc -keystore e:/yushan.keystore -storepass 123456

顯示:

-------------------------------------------------------------------------------------------------------

Keystore 類型: JKS
Keystore 提供者: SUN

您的 keystore 包含 1 輸入

別名名稱: yushan
創建日期: 2009-7-29
項類型: PrivateKeyEntry
認證鏈長度: 1
認證 [1]:
-----BEGIN CERTIFICATE-----
MIICSzCCAbSgAwIBAgIESm8p7TANBgkqhkiG9w0BAQUFADBqMQ8wDQYDVQQGDAbkuK3lm70xDzAN
BgNVBAgMBua5luWNlzEPMA0GA1UEBwwG5rmY5r2tMREwDwYDVQQKDAh4eOWNj+S8mjERMA8GA1UE
CwwIeHjlhazlj7gxDzANBgNVBAMTBnl1c2hhbjAeFw0wOTA3MjgxNjQwMTNaFw0xMDA3MjgxNjQw
MTNaMGoxDzANBgNVBAYMBuS4reWbvTEPMA0GA1UECAwG5rmW5Y2XMQ8wDQYDVQQHDAbmuZjmva0x
ETAPBgNVBAoMCHh45Y2P5LyaMREwDwYDVQQLDAh4eOWFrOWPuDEPMA0GA1UEAxMGeXVzaGFuMIGf
MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoru1RQczRzTnBWxefVNspQBykS220rS8Y/oX3mZa
hjL4wLfOURzUuxxuVQR2jx7QI+XKME+DHQj9r6aAcLBCi/T1jwF8mVYxtpRuTzE/6KEZdhowEe70
liWLVE+hytLBHZ03Zhwcd6q5HUMu27du3MPQvqiwzTY7MrwIvQQ8iQIDAQABMA0GCSqGSIb3DQEB
BQUAA4GBAGoQQ1/FnTfkpQh+Ni6h3fZdn3sR8ZzDMbOAIYVLAhBb85XDJ8QZTarHbZMJcIdHxAl1
i08ct3E8U87V9t8GZFWVC4BFg/+zeFEv76SFpVE56iX7P1jpsu78z0m69hHlds77VJTdyfMSvtXv
sYHP3fxfzx9WyhipBwd8VPK/NgEP
-----END CERTIFICATE-----

-------------------------------------------------------------------------------------------------------

3、證書的導出: 

keytool -export -alias yushan -keystore e:/yushan.keystore -file e:/yushan.crt(指定導出的證書位置及證書名稱) -storepass 123456

4、查看導出的證書信息 
   keytool -printcert -file yushan.crt
   顯示:(在windows下可以雙擊yushan.crt查看)
-----------------------------------------------------------------------
所有者:CN=yushan, OU=xx公司, O=xx協會, L=湘潭, ST=湖南, C=中國
簽發人:CN=yushan, OU=xx公司, O=xx協會, L=湘潭, ST=湖南, C=中國
序列號:4a6f29ed
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
證書指紋:
         MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
         SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
         簽名算法名稱:SHA1withRSA
         版本: 3
-----------------------------------------------------------------------

5、證書的導入: 
   準備一個導入的證書:
   keytool -genkey -alias shuany -keypass shuany -keyalg RSA -keysize 1024 -validity 365 -keystore  e:/shuany.keystore -storepass 123456 -dname "CN=shuany, 

OU=xx, O=xx, L=xx, ST=xx, C=xx";
   keytool -export -alias shuany -keystore e:/shuany.keystore -file e:/shuany.crt -storepass 123456
 
  現在將shuany.crt 加入到yushan.keystore中:
  keytool -import -alias shuany(指定導入證書的別名,如果不指定默認爲mykey,別名唯一,否則導入出錯) -file e:/shuany.crt -keystore e:/yushan.keystore -storepass 

123456

 keytool -list  -v -keystore e:/keytool /yushan.keystore -storepass 123456
顯示:
------------------------------------------------------------------------------
Keystore 類型: JKS
Keystore 提供者: SUN

您的 keystore 包含 2 輸入

別名名稱: yushan
創建日期: 2009-7-29
項類型: PrivateKeyEntry
認證鏈長度: 1
認證 [1]:
所有者:CN=yushan, OU=xx公司, O=xx協會, L=湘潭, ST=湖南, C=中國
簽發人:CN=yushan, OU=xx公司, O=xx協會, L=湘潭, ST=湖南, C=中國
序列號:4a6f29ed
有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010
證書指紋:
         MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3
         SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8
         簽名算法名稱:SHA1withRSA
         版本: 3


*******************************************
*******************************************


別名名稱: shuany
創建日期: 2009-7-29
輸入類型: trustedCertEntry

所有者:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx
簽發人:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx
序列號:4a6f2cd9
有效期: Wed Jul 29 00:52:41 CST 2009 至Thu Jul 29 00:52:41 CST 2010
證書指紋:
         MD5:15:03:57:9B:14:BD:C5:50:21:15:47:1E:29:87:A4:E6
         SHA1:C1:4F:8B:CD:5E:C2:94:77:B7:42:29:35:5C:BB:BB:2E:9E:F0:89:F5
         簽名算法名稱:SHA1withRSA
         版本: 3


*******************************************
*******************************************
------------------------------------------------------------------------------

6、證書條目的刪除: 
 keytool -delete -alias shuany(指定需刪除的別名) -keystore yushan.keystore -storepass 123456
  
7、證書條目口令的修改: 
keytool -keypasswd -alias yushan(需要修改密碼的別名) -keypass yushan(原始密碼) -new 123456(別名的新密碼)  -keystore e:/yushan.keystore -storepass 123456

8、keystore口令的修改: 
 keytool -storepasswd -keystore e:/yushan.keystore(需修改口令的keystore) -storepass 123456(原始密碼) -new yushan(新密碼)

 

9、修改keystore中別名爲yushan的信息

 

keytool -selfcert -alias yushan -keypass yushan -keystore e:/yushan.keystore -storepass 123456 -dname "cn=yushan,ou=yushan,o=yushan,c=us"

發佈了98 篇原創文章 · 獲贊 25 · 訪問量 59萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章