keytool命令总结
keytool 命令總結
一、創建數字證書
交互模式
使用默認的密鑰庫.keystore(目錄是c:?Documents?and?Setting用戶名)和算法(DSA)
keytool?-genkey
默認的別名mykey
密鑰庫中可以存放多個條目(公鑰/私鑰對和證書),它們在密鑰庫中以別名(alias)區分。
keytool?-genkey?-alias?mytest?-keyalg?RSA?-keysize?1024?-keystore?mykeystore?-validity?4000
其中,
-keyalg參數可以指定密鑰的算法,如果需要指定密鑰的長度,可以再加上-keysize參數。密鑰長度默認為1024位,使用DSA算法時,密鑰長度必須在512到1024之間,并且是64的整數倍。
-keystore參數可以指定密鑰庫的名稱。密鑰庫其實是存放密鑰和證書的文件,密鑰庫對應的文件如果不存在自動創建。
-validity參數可以指定所創建的證書有效期是多少天。
非交互模式:
keytool?-genkey?-dname?"CN=tmp,?OU=NC,?O=Shanghai?University,?L=ZB,?ST=Shanghai,?C=CN"?-alias?tmp?-keyalg?RSA?-keystore?mykeystore?-keypass?wshr.ut?-storepass?wshr.ut??-validity?1000
?
二、數字證書的顯示(從密鑰庫中)
默認密鑰庫全部證書信息
keytool?-list?-v(顯示詳細信息)
顯示指定密鑰庫指定條目證書信息(包含了發照者(簽發者)、序號、有效期、MD5和SHA1認證指紋等額外信息)
keytool?-list?-v?-keystore?lfkeystore?-alias?lf
?
三、使用Keytool將數字證書導出到文件
將指定的證書從密鑰庫導出為沒編碼過的文件。
keytool?-export?-alias?lf?-file?lf.cer??-keystore?lfkeystore?
?
四、使用Keytool從文件中顯示證書
keytool?-printcert?-file??lf.cer
?
五、在Windows中從文件顯示證書
只要文件名以.cer為后綴,Windows操作系統就可以直接識別。如在Windows中雙擊lf.cer圖標,將出現證書窗口。其中包含了證書的所有者、頒發者、有效期等信息。
點擊“詳細資料”,可以看到證書的版本、序號、簽名算法、頒發者、有效期、主題(即全名)、公鑰算法、拇印算法、拇印等信息。其中的拇印即認證指紋。
?
六、密鑰庫的維護
使用Keytool刪除指定條目
keytool?-delete?-alias?tmp1?-keystore?mykeystore
使用Keytool修改指定條目的口令
keytool?-keypasswd?-alias?tmp1?-keystore?mykeystore
(非交互模式:keytool?-keypasswd?-alias?tmp1?-keystore?mykeystore?-storepass?wshr.ut?-keypass?123456?-new?080302,其中080302為原密碼,123456為新密碼?)
Java程序列出密鑰庫所有條目
?
相關知識點:Java程序讀取證書和顯示證書指定信息????Java程序實現密鑰庫的維護
?
證書生成應用實例:
執行命令前先保證文件夾存在。例如:在c盤建立keystore文件夾
第一步:為服務器生成證書?
確定域名:本機中域名解析修改文件是C:WINDOWSsystem32driversetchosts
使用keytool?為?Tomcat?生成證書和密鑰庫,假定目標機器的域名是“?hepengfei?”,?keystore?文件存放在“?C:keystoreserver?”,口令為“?080302?”,命令如下:?
keytool?-genkey?-v?-keystore?C:keystoreserver?-alias?serverkey?-keyalg?RSA?-validity?3650?-dname?"CN=hepengfei,OU=cn,O=cn,L=cn,ST=cn,c=cn"?-storepass?080302?-keypass?080302?
生成server.cer安裝在客戶端解決服務器信任問題:
keytool?-export?-keystore?C:keystoreserver?-alias?serverkey?-file?c:keystoreserver.cer?-storepass?080302?
第二步:為客戶端生成證書?
(注意:個人證書的生成和使用比較特別,是分開的。先生成p12文件,然后導出cer文件,再將cer文件導入默認類型的keystore(JKS)文件)
這一步是為瀏覽器生成證書,以便讓服務器來驗證它。為了能將證書順利導入至IE?和?Firefox?,證書格式應該是?PKCS12?,因此,使用如下命令生成:?
keytool?-genkey?-v?-keystore?C:keystoreuser.p12?-alias?MyPC?-keyalg?RSA?-storetype?PKCS12?-validity?3650?-dname?"CN=MyPC,OU=cn,O=cn,L=cn,ST=cn,c=cn"?-storepass?080302?-keypass?080302?
服務器要信任客戶端證書,就必須把客戶端證書添加為服務器的信任認證。由于不能直接將?PKCS12?格式的證書庫導入,我們必須先把客戶端證書導出為一個單獨的?CER?文件,使用如下命令:?
keytool?-export?-alias?MyPC?-keystore?C:keystoreuser.p12?-storetype?PKCS12?-storepass?080302?-rfc?-file?C:keystoreuser.cer?
接著,將C:user.cer導入到服務器的證書庫,添加為一個信任證書:?
keytool?-import?-v?-file?C:keystoreuser.cer?-keystore?c:keystoreservertrust?-alias?user?-storepass?080302
輸入“是”確認完成。
通過list?命令查看:?
keytool?-list?-keystore?c:\keystore\servertrust?-storepass?080302?
也可以考慮將服務器證書和服務器信任證書放到一個密鑰庫中
第四步:配置Tomcat?服務器?
打開Tomcat?根目錄下的?/conf/server.xml?,修改如下:?
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
?????????????? maxThreads="150" scheme="https" secure="true"
?????????????? clientAuth="true"?sslProtocol="TLS"
???????????????keystoreFile="C:\Java\Tomcat\conf\keystore\server"?keystorePass="080302"
?????????????? truststoreFile="C:\Java\Tomcat\conf\keystore\servertrust"?truststorePass="080302"?
/>
詳細解釋見本節最前面介紹。
?
安裝個人證書user.p12(密碼:080302)和服務器證書server.cer
到這里啟動tomcat,輸入?https://hepengfei:8443/Test,就OK了。?
?
如果數字證書注冊名稱不是127.0.0.1,而是對應的一個hepengfei,
使用ip訪問(https://127.0.0.1:8443/Test)可以進入選擇數字證書界面(仿真格式):?
選擇數字證書
????名稱?????頒發商
????MyPC?????MyPC
????詳細信息??查看證書
????????確定???取消
注意點:
keytool?-list?-v?-keystore?user
使用的庫要privateKeyEntry
信任的庫要trustedCertEntry
ConvertKeystoreType.java用于轉換密鑰庫類型(PKCS12與JKS格式證書庫轉換工具)
ssl使用其中四個密鑰庫
https使用server、servertrust、user.p12(安裝到本地計算機)、server.cer四個
?
生成證書請求:
keytool?-certreq?-alias?tomcat_server?-sigalg?MD5withRSA?-file?tomcat_server.csr?-keypass?123456?-storepass?123456?-keystore?server_keystore?
?
PKCS12
使用Keytool列出pkcs12證書的內容
keytool?-rfc?-list?-keystore?tomcat_client.p12?-storetype?pkcs12
使用Keytool導出pkcs12證書的公鑰證書
keytool??-keystore?tomcat_client.p12?-storetype?pkcs12?-export?-alias?mypc?-file?mypc.cer
?
將已經簽名的證書導入密鑰庫(覆蓋原來的公鑰)
先導入證書鏈中的相關信任證書,再導入已經簽名的證書(別名與私鑰證書別名保持一樣)。
?
轉載于:https://www.cnblogs.com/suncoolcat/p/3398049.html
總結
以上是生活随笔為你收集整理的keytool命令总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: uva 10562
- 下一篇: ADO.Net知识总结