以前接手到这样一个需求:
有一个apache使用的ssl证书,需要把该证书放置到jetty上使用,下面就把这过程记录下来,以备以后使用
过程中涉及到Keytool、Keystore和Portecle工具的概念,下面先做一下准备
Keytool和Keystore概念:
Keytool 是一个有效的安全钥匙和证书的管理工具.
Java 中的 keytool.exe(位于JDK\Bin目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别) 的形式存入证书库的中,证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。
Keytool 把钥匙和证书储存到一个 keystore. 默任的实现 keystore 的是一个文件 . 它用一个密码保护钥匙 .
Portecle工具:
Portecle 是一个图形化界面的 JDK 中的命令行工具 keytool,可生成各种不同类型的密钥库,生成并存储相关的X.509证书、生成 CSRs、导入和储存信任的证书并进行维护。
附上下载地址:http://download.csdn.net/detail/lzw_2006/7482933
下面正式开始导入
目前我们手上有 server.crt 证书 以及 对应的私钥 server.key
第一步:将crt文件和key文件储存到p12 key pair中
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12 -name jetty
其中 -name是这个钥匙对文件的别名,在Keystore里面需要这样的一个别名来区分钥匙对
接下来他会提示用户为这个p12文件创建密码
这里设置为123456,记住这个密码,因为后面导入keystore时需要用到
新建一个JKS类型的keystore
第三步:在keystore中导入第一步生成的p12文件
最后就能看到keystore里面导入了Alias Name叫jetty的钥匙对
第四步:保存keystore文件
最后一步:
1.把keystore文件复制到jetty的etc文件夹去
2.配置jetty-ssl.xml文件
配置3个地方,一个是指定keystore文件路径,第二个是设置keystore的密码(123),第三个是设置keystore里面keypair的密码(123456)
3.激活jetty-ssl.xml文件
在jetty的根目录下找到start.ini文件,把 "etc/jetty-ssl.xml"前面的#给去掉
然后重启jetty就大功告成!