Tomcat配置CloudFlare免费ssl证书问题
花了三个小时时间才解决这个小问题。
起因:
在tomcat上配置cloudflare的免费ssl证书,确不起作用。
过程:
在cloudflare上创建了免费的ssl证书,会拿到两个key,一个是证书,一个是私钥。分别保存为cert.pem和key.pem。
这时候如果按照一般的步骤,通过keytool把cert.pem导入到keystore中,然后在tomcat的server.xml中配置对应的Connector。会发现,虽然443端口打开了,但是访问443端口没有任何回包。去看tomcat的catalina日志,会发现在启动时有一个异常:
1 | Alias name [*] does not identify a key entry |
但是通过keytool -list -v
去查看jks中的证书,却又看到明明是有这个alias的。
分析:
就是因为被这个异常误导,所以花了大量时间在研究是不是生成jks的方法有问题,然而其实问题和alias本身没有关系。之所以会有这个问题,是因为上面的做法中,keystore只导入了pem证书,却没有证书对应的私钥,因此无法使用。
解决:
需要先把证书和私钥合并为p12证书,然后再把证书导入jks中。步骤如下:
- 合并证书和私钥,会要求输入合并后的证书密码:xxxxxx
1 | openssl pkcs12 -inkey key.pem -in cert.pem -export -out cert.p12 |
- 把生成后的证书导入jks中
1 | keytool -importkeystore -srckeystore cert.p12 -srcstorepass xxxxxx -srcstoretype pkcs12 -destkeystore mydomain.jks -deststoretype jks -deststorepass xxxxxx |
生成mydomain.jks后在tomcat中配置对应的Connector并重启tomcat。
1 | <Connector port="443" |
现在可以正常访问了:https://moviehell.net