这两天,一直忙着搞SSL,其间遇到了不少小麻烦,为了总结自己的得失,同时也为了给后来者一些参考,就整理了一下。
其实主要的就是要创建一个密钥仓库以管理您的公钥
/
私钥对来自您所信任实体的证书。
第一步:生成密钥对
您首先要做的是创建一个密钥仓库和生成密钥对。您可以使用以下命令:
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
(请注意:键入该命令时必须使其成为一行。此处用多行来显示,主要是为了可读性。)如下图:
该命令将在
C
盘的
“mykeystore”
目录中创建名为
“weblogic.jks”
的密钥仓库,并赋予它口令
“
123456
”
。它将为实体生成公钥
/
私钥对,该实体的
“
特征名
”
为:常用名
“hyq”
、组织
“eagle”
和两个字母的国家代码
“cn”
。“
-keyalg
”指定它使用的是那种密钥生成算法来创建密钥,缺省的是
“DSA”
密钥生成算法(会使用缺省的
“
带
DSA
的
SHA1”
签名算法),两个密钥(公钥与私钥)的长度是
512
位,由
-keysize
来指定,默认的是
1024
位。
该证书包括公钥和特征名信息。该证书的有效期为
365
天,由
-validity
来指定,且与别名
“business”
所代表的密钥仓库项关联。私钥被赋予口令
“
123456
”
。
命令行里
DName
信息注解
DN
信息域
|
含义
|
CN
|
域名或
IP
|
OU
|
部门,没有部门的可不要此项
|
O
|
单位名称
|
L
|
单位地址
|
S
|
省份的拼音(第一个字母大写)
|
C
|
国家的简写 (
CN
代表中国)
|
如果采用选项的缺省值,可以大大缩短该命令。实际上,这些选项并不是必需的;对于有缺省值的选项,未指定时将使用缺省值,对于任何被要求的值,您将会得到要求输入它的提示。例如:输入命令
keytool -genkey -keystore "C:/tone.jks" -storepass 123456 -keyalg RSA
,就会有如下提示:
注意:这里的
密钥仓库路径一定要存在,如果不存在的话,它就会抛如下的异常
第二步
:
产生证书请求certreq.pem 文件
使用如下命令:
keytool
-certreq -alias weblogic -sigalg "MD5withRSA" -file
C:/mykeystore/certreq.pem -keypass 123456 -keystore
C:/mykeystore/weblogic.jks -storepass 123456
这样在
C:/mykeystore/
目录下
就会产生一个
certreq.pem
文件,内容如下:
-----BEGIN NEW CERTIFICATE REQUEST-----
MIHlMIGQAgEAMCsxCzAJBgNVBAYTAmNuMQ4wDAYDVQQKEwVlYWdsZTEMMAoGA1UEAxMDaHlxMFww
DQYJKoZIhvcNAQEBBQADSwAwSAJBAMhaIG2Ki7+RwZUP4gPBdTbnY38bisW16u1XUyysPxdNwSie
aSd6E3Hm277E7NjHoz56ZoaYdPPDmdiTkMrS9rcCAwEAAaAAMA0GCSqGSIb3DQEBBAUAA0EAYRNl
l5dyGgV9hhu++ypcJNQTrDIwjx1QT4fgVubrtIaHU0fzHamD5QG6PYddw9TL51XQHvu6tOS0NUc/
ItNKJw==
-----END NEW CERTIFICATE REQUEST-----
第三步:这就相对来说简单多了,就是向CA提交证书请求。
你可以随便从网上找一家免费的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时不能正常的工作。)
这就全部完成了密钥仓库的创建。然后就可以在支持这些证书格式的服务器上使用了。下一篇将会写一下在weblogic上如何配置双向SSL。
生成key,要设一个密码,然后填点乱七八糟的信息
- keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.key
keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.key
导出证书格式,使用上面设的密码
- keytool -export -alias tomcat -file tomcat.cer -keystore tomcat.key
keytool -export -alias tomcat -file tomcat.cer -keystore tomcat.key
导入缺省证书,缺省密码为changeit
- sudo keytool -import -alias tomcat -keystore /usr/local/jdk/jre/lib/security/cacerts -file tomcat.cer
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