-genkey 在用戶主目錄中創(chuàng)建一個(gè)默認(rèn)文件".keystore",還會產(chǎn)生一個(gè)mykey的別名,mykey中包含用戶的公鑰、私鑰和證書
-alias 產(chǎn)生別名
-keystore 指定密鑰庫的名稱(產(chǎn)生的各類信息將不在.keystore文件中
-keyalg 指定密鑰的算法
-validity 指定創(chuàng)建的證書有效期多少天
-keysize 指定密鑰長度
-storepass 指定密鑰庫的密碼
-keypass 指定別名條目的密碼
-dname 指定證書擁有者信息 例如: "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
-list 顯示密鑰庫中的證書信息 keytool -list -v -keystore sage -storepass ....
-v 顯示密鑰庫中的證書詳細(xì)信息
-export 將別名指定的證書導(dǎo)出到文件 keytool -export -alias caroot -file caroot.crt
-file 參數(shù)指定導(dǎo)出到文件的文件名
-delete 刪除密鑰庫中某條目 keytool -delete -alias sage -keystore sage
-keypasswd 修改密鑰庫中指定條目口令 keytool -keypasswd -alias sage -keypass .... -new .... -storepass ... -keystore sage
-import 將已簽名數(shù)字證書導(dǎo)入密鑰庫 keytool -import -alias sage -keystore sagely -file sagely.crt
導(dǎo)入已簽名數(shù)字證書用keytool -list -v 以后可以明顯發(fā)現(xiàn)多了認(rèn)證鏈長度,并且把整個(gè)CA鏈全部打印出來。
keytool JAVA是個(gè)密鑰和證書管理工具。它使用戶能夠管理自己的公鑰/私鑰對及相關(guān)證書,用于(通過數(shù)字簽名)自我認(rèn)證(用戶向別的用戶/服務(wù)認(rèn)證自己)或數(shù)據(jù)完整性以及認(rèn)證服務(wù)。它還允許用戶儲存他們的通信對等者的公鑰(以證書形式)。通過keytool –help查看其用法,詳細(xì)信息可以參考http: //java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/keytool.html
創(chuàng)建證書Java 中的 keytool.exe (位于 JDK/Bin 目錄下)可以用來創(chuàng)建數(shù)字證書,所有的數(shù)字證書是以一條一條(采用別名區(qū)別)的形式存入證書庫的中,證書庫中的一條證書包含該條證書的私鑰,公鑰和對應(yīng)的數(shù)字證書的信息。證書庫中的一條證書可以導(dǎo)出數(shù)字證書文件,數(shù)字證書文件只包括主體信息和對應(yīng)的公鑰。
每一個(gè)證書庫是一個(gè)文件組成,它有訪問密碼,在首次創(chuàng)建時(shí),它會自動生成證書庫,并要求指定訪問證書庫的密碼。
在創(chuàng)建證書的的時(shí)候,需要填寫證書的一些信息和證書對應(yīng)的私鑰密碼。這些信息包括 CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx,它們的意思是:
? CN(Common Name - 名字與姓氏):其實(shí)這個(gè)“名字與姓氏”應(yīng)該是域名,比如說localhost或是blog.devep.net之類的。輸成了姓名,和真正運(yùn)行的時(shí)候域名不符,會出問題。瀏覽器訪問時(shí),彈出一個(gè)對話框,提示“安全證書上的名稱無效,或者與站點(diǎn)名稱不匹配”,用戶選擇繼續(xù)還是可以瀏覽網(wǎng)頁。但是用http client寫程序訪問的時(shí)候,會拋出類似于“javax.servlet.ServletException: HTTPS hostname wrong: should be ”的異常。
? OU(Organization Unit - 組織單位名稱)
? O(Organization - 組織名稱)
? L(Locality - 城市或區(qū)域名稱)
? ST(State - 州或省份名稱)
? C(Country - 國家名稱)
可以采用交互式讓工具提示輸入以上信息,也可以采用參數(shù),如:-dname “CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=xx”來自動創(chuàng)建。
創(chuàng)建一個(gè)證書
指定證書庫為 D:/keystore/test,創(chuàng)建別名為 Tomcat 的一條證書,它指定用 RSA 算法生成,且指定密鑰長度為 1024,證書有效期為 1 年:
keytool -genkey -alias Tomcat -keyalg RSA -keysize 1024 -keystore C:/keystore/test -validity 365
顯示證書庫中的證書使用如下命令: keytool -list -keystore C:/keystore/test 將顯示 C:/keystore/test 證書庫的的所有證書列表
導(dǎo)出到證書文件
使用命令:keytool -export -alias Tomcat -file C:/keystore/TC.cer -keystore C:/keystore/test 將把證書庫C:/keystore/test 中的別名為 Tomcat 的證書導(dǎo)出到 TC.cer 證書文件中,它包含證書主體的信息及證書的公鑰,不包括私鑰,可以公開。
導(dǎo)出的證書文件是以二進(jìn)制編碼文件,無法用文本編輯器正確顯示,可以加上 -rfc參數(shù)以一種可打印的編者編碼輸出。 如:
keytool -export -alias Tomcat -file C:/keystore/TC.cer -keystore C:/keystore/test –rfc
查看證書的信息
通過命令: keytool -printcert -file D:/keystore/TC.cer 可以查看證書文件的信息。 也可以在 Windows 資源管理器中雙擊產(chǎn)生的證書文件直接查看。
刪除密鑰庫中的條目
keytool -delete -alias Tomcat -keystore C:/keystore/test
這條命令將 C:/keystore/test 庫中的 Tomcat 這一條證書刪除了。
修改證書條目口令
keytool -keypasswd -alias Tomcat -keystore C:/keystore/test,可以以交互的方式修改 C:/keystore/test 證書庫中的條目為 Tomcat 的證書。
Keytool -keypasswd -alias Tomcat -keypass oldpasswd -new newpasswd -storepass storepasswd -keystore C:/keystore/test 這一行命令以非交互式的方式修改庫中別名為 Tomcat 的證書的密碼為新密碼 newpasswd,行中的 oldpasswd 是指該條證書的原密碼, storepasswd 是指證書庫的密碼。