0%

获取CA证书,并安装SSL到Tomcat

获取CA证书,并且手动安装SSL到Tomcat上

申请CA证书

免费资源部落中搜索SSL或者证书字样,会得到好多文章。

https://www.freehao123.com/gogetssl-comodo-ssl-rapidssl/
https://www.freehao123.com/free-ssl-paihang/

阿里云也已经提供了免费的证书服务。不过我没有申请下来,本以为几分钟搞定,但是过了一天还没有,可能是哪里没弄好吧。腾讯云也有类似的服务,几分钟就申请下来了,为期一年的。

后来找到Let’s Encrypt,是免费中最有名的了。它官网中提供了脚本工具Certbot来适配各种系统的各种web server。一些有名的应用,如WordPress面板中也集成了自动申请及续期服务(证书默认3个月期限,需要续期),国产又拍云也支持自动申请及续期。我没有用VPS,这次只是为了测试证书,想便捷的拿到证书文件,所以直接在本地配置Tomcat。

使用了SSL For Free拿到Let’s Encrypt颁发的证书,https://gethttpsforfree.com/ 也是类似的服务。

步骤很简单,只需要验证一下域名的所有权即可。我在域名解析中加了TXT记录,得到证书文件,包括三个文件: private.key certificate.crt ca_bundle.crt。此证书有效域名为xiaodong.sitewww.xiaodong.site

配置Tomcat

添加域名到Tomcat

首先添加域名,编辑配置文件server.xml

1
2
3
<Host name="www.xiaodong.site"  appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="D:\public" reloadable="true" />

顺便把8080改为80,把www.xiaodong.site添加A记录到本机。如果是家庭局域网,可把A记录指向自己公网IP,然后可在路由配置虚拟服务器端口转发到本机。如果没权限配也没关系,这里只是测试一下。

现在,本地访问www.xiaodong.site可以打开网站了。如下图:

配置Tomcat SSL

这里顺便介绍下,如果不是CA颁发的证书,怎样给Tomcat开启SSL。

首先本地生成一个证书,用到了JDK的keytool。

1
2
3
4
# 生成.keystore文件
keytool -genkey -alias tomcat -keyalg RSA -keypass 111111 -storepass 111111 -keystore test.keystore
# 根据.keystore文件导出cer证书,Tomcat只需.keystore文件。
keytool -export -trustcacerts -alias tomcat -file server.cer -keystore test.keystore -storepass 111111

然后编辑配置文件server.xml,把SSL打开,证书指向刚才生成的文件,密码为上一步配置的密码。顺便把8443全改为https默认的443,

1
2
3
4
5
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\tomcat_center\tomcat-test\keystore\test.keystore"
keystorePass="111111" />

此时重启Tomcat,访问页面如图:

接下来使用刚刚申请的CA证书,来制作配置Tomcat,需要使用到openssl工具。

1
2
openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca_bundle.crt
keytool -importkeystore -srckeystore certificate.pfx -srcstorepass 111111 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks -deststorepass 111111

把配置文件改了,刚才的test.keystore替换为keystore.jks。重启Tomcat,访问页面如图: