這兩天,一直忙著搞SSL,其間遇到了不少小麻煩,為了總結自己的得失,同時也為了給后來者一些參考,就整理了一下。
其實主要的就是要創(chuàng)建一個密鑰倉庫以管理您的公鑰
/ 私鑰對來自您所信任實體的證書。
?
第一步:生成密鑰對
您首先要做的是創(chuàng)建一個密鑰倉庫和生成密鑰對。您可以使用以下命令: ?
keytool -genkey -keyalg RSA -keysize 512 -dname "cn=hyq,o=eagle,c=cn" -alias weblogic -keypass 123456 -keystore C:/mykeystore/weblogic.jks -storepass 123456 -validity 365

(請注意:鍵入該命令時必須使其成為一行。此處用多行來顯示,主要是為了可讀性。)如下圖:
Snap2.gif

該命令將在 ?C? 盤的 “mykeystore” 目錄中創(chuàng)建名為 “weblogic.jks” 的密鑰倉庫,并賦予它口令 123456 。它將為實體生成公鑰 / 私鑰對,該實體的 特征名 為:常用名 “hyq” 、組織 “eagle” 和兩個字母的國家代碼 “cn” ?!?/span> -keyalg ”指定它使用的是那種密鑰生成算法來創(chuàng)建密鑰,缺省的是 “DSA” 密鑰生成算法(會使用缺省的 ?DSA? ?SHA1” 簽名算法),兩個密鑰(公鑰與私鑰)的長度是 512 位,由 -keysize 來指定,默認的是 1024? 位。 ? 該證書包括公鑰和特征名信息。該證書的有效期為 365 天,由 -validity 來指定,且與別名 “business” 所代表的密鑰倉庫項關聯(lián)。私鑰被賦予口令 123456

?

命令行里 DName 信息注解

?

DN 信息域

含義

CN

域名或 IP

OU

部門,沒有部門的可不要此項

O

單位名稱

L

單位地址

S

省份的拼音(第一個字母大寫)

C

國家的簡寫 ( CN 代表中國)


如果采用選項的缺省值,可以大大縮短該命令。實際上,這些選項并不是必需的;對于有缺省值的選項,未指定時將使用缺省值,對于任何被要求的值,您將會得到要求輸入它的提示。例如:輸入命令 keytool -genkey -keystore "C:/tone.jks" -storepass 123456 -keyalg RSA ,就會有如下提示:


注意:這里的
密鑰倉庫路徑一定要存在,如果不存在的話,它就會拋如下的異常

Snap4.gif
第二步
: 產(chǎn)生證書請求certreq.pem 文件

使用如下命令:

keytool -certreq -alias weblogic -sigalg "MD5withRSA" -file C:/mykeystore/certreq.pem -keypass 123456 -keystore C:/mykeystore/weblogic.jks -storepass 123456

Snap5.gif
這樣在
C:/mykeystore/ 目錄下 就會產(chǎn)生一個 certreq.pem 文件,內(nèi)容如下:

-----BEGIN NEW CERTIFICATE REQUEST-----

MIHlMIGQAgEAMCsxCzAJBgNVBAYTAmNuMQ4wDAYDVQQKEwVlYWdsZTEMMAoGA1UEAxMDaHlxMFww

DQYJKoZIhvcNAQEBBQADSwAwSAJBAMhaIG2Ki7+RwZUP4gPBdTbnY38bisW16u1XUyysPxdNwSie

aSd6E3Hm277E7NjHoz56ZoaYdPPDmdiTkMrS9rcCAwEAAaAAMA0GCSqGSIb3DQEBBAUAA0EAYRNl

l5dyGgV9hhu++ypcJNQTrDIwjx1QT4fgVubrtIaHU0fzHamD5QG6PYddw9TL51XQHvu6tOS0NUc/

ItNKJw==

-----END NEW CERTIFICATE REQUEST-----

第三步:這就相對來說簡單多了,就是CA提交證書請求。
??? 你可以隨便從網(wǎng)上找一家免費的CA認證適用機構(很多的),然后按照上面的提示進行操作就可以了,這一步就要用到前面生成的certreq.pem 文件了。(注意:一定要下載根證書)
??? 將生成的證書和下載的根證書放至你比較容易找到的位置,我一般將它們和生成的jks文件放到一起。

第四步:導入證書
??? 通過命令:keytool -import -alias RootCA -trustcacerts -file C:/mykeystore/RootCADemo.cer -keystore C:/mykeystore/weblogic.jks -storepass 123456將根證書導入第一步生成的weblogic.jks中,接著將所有其它的證書按照此命令全部導入。(注意證書的別名不能重復,同時一定注意要用上 -trustcacerts,否則,你在以后使用時,它將會認為你導入的這些證書是不可信任的 ,就會導致你在配置SSL時不能正常的工作。)
??? 這就全部完成了密鑰倉庫的創(chuàng)建。然后就可以在支持這些證書格式的服務器上使用了。下一篇將會寫一下在weblogic上如何配置雙向SSL。



生成和導入證書

生成key,要設一個密碼,然后填點亂七八糟的信息
Java代碼
  1. keytool?-genkey?-alias?tomcat?-keyalg?RSA?-keystore?tomcat.key??


導出證書格式,使用上面設的密碼
Java代碼
  1. keytool?-export?-alias?tomcat?-file?tomcat.cer?-keystore?tomcat.key??


導入缺省證書,缺省密碼為changeit
Java代碼
  1. sudo?keytool?-import?-alias?tomcat?-keystore?/usr/local/jdk/jre/lib/security/cacerts?-file?tomcat.cer??


tomcat.key -> tomcat.cer -> cacerts

最后的cacerts是java缺省信任的證書。

參考一個很詳細的導入各種證書的方法:
http://www.99inf.net/SoftwareDev/Java/53760.htm