Pem证书换成tomcat使用的keystore和安装

这篇文章介绍把apache nginx 使用的pem格式密钥和CA颁发的证书转换成tomcat可以使用的格式以及安装方法。我们以linux系统为例,首先我们需要以下证书文件或已经安装在服务器上的软件:

CA厂商颁发的SSL证书
SSL证书对应的私钥
安装SSL证书所需要的中级证书和根证书
Tomcat
服务器上已经安装openssl


1. 把密钥和证书转换为PKCS12格式的证书

首先我们要把pem格式的密钥和证书文件转换成Java keystore 能够处理的格式,在这里我们转换为PKCS12格式 ,请运行以下命令

openssl pkcs12 -export -in yourcert.crt -inkey yourkey.key -out newcert.p12 -name tomcat -chain -CAfile ca.crt

运行命令后,请按照提示输入一个你可以记得住的密码。
关于这行命令的说明:

a. yourcert.crt CA颁发的SSL证书,yourkey.key是pem格式的密钥,newcert.p12是转换后的PKCS12格式证书。
b. tomcat tomcat通过这个别名在keystore搜索对应的证书应用到网站上。
c. ca.crt 是中级证书和根证书的合并文件,这样才能保证完整的证书链。


2. 导入PKCS12格式的证书和密钥 得到Java keystore

keytool -importkeystore -deststorepass <a_password_for_your_java_keystore> -destkeypass <a_password_for_the_key_in_the_keystore> -destkeystore tomcat.keystore -srckeystore <exported_private_key_and_cert.p12> -srcstoretype PKCS12 -srcstorepass <the_password_I_told_you_to_remember> -alias tomcat

说明:

运行命令的时候请不要包含任何括号<>;
<a_password_for_your_java_keystore> 这里替换成你自己的密码;
<a_password_for_the_key_in_the_keystore> 这里替换成你自己的密码 如果担心混淆, 可以都设置成相同的密码;
<exported_private_key_and_cert.p12> 刚才在第一步生成的PKCS12格式文件;
<the_password_I_told_you_to_remember> 刚才在第一步设置的密码;

通过这一步我们会生成keystore文件: tomcat.keystore

 

3. 导入中级证书 根证书 

keytool -import -alias intermediate1 -keystore tomcat.keystore -trustcacerts -file intermediate1.crt

如果有多个中级证书 请导入其他的中级证书,

keytool -import -alias intermediate2 -keystore tomcat.keystore -trustcacerts -file intermediate2.crt


4. 把在第二步生成的tomcat.keystore 移动到适合保存该文件的目录,


我们将在下一步的配置文件中要引用这个文件。比如 /usr/local/keystore/tomcat.keystore

 

5. 配置tomcat让他能够使用我们新生成的keystore


在tomcat安装目录下的conf文件夹内找到server.xml ,编辑该文件,找到 SSL connector 标签,参考下面的设置做相应的修改。比如要使用的端口 、keystore存放的目录 ,keystore的密码 ,(其他参数的如果请参考相关文档做修改,其他参数如果不明白,请保留默认的数值就可以了)

<Connector port="8443"
maxThreads="200"
scheme="https"
secure="true"
SSLEnabled="true"
keystoreFile="/usr/local/keystore/tomcat.keystore"
keystorePass="123456789"
clientAuth="false"
sslProtocol="TLS"/>

重启tomcat  使SSL证书生效

 

tomcat