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

发布时间:2019/8/29 21:22:04 打印 字号:

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

SSL证书所使用的密钥
CA厂商颁发的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"/>

6. 重启tomcat。