获取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.site
和www.xiaodong.site
。
配置Tomcat
添加域名到Tomcat
首先添加域名,编辑配置文件server.xml
1 | <Host name="www.xiaodong.site" appBase="webapps" |
顺便把8080改为80,把www.xiaodong.site
添加A记录到本机。如果是家庭局域网,可把A记录指向自己公网IP,然后可在路由配置虚拟服务器端口转发到本机。如果没权限配也没关系,这里只是测试一下。
现在,本地访问www.xiaodong.site
可以打开网站了。如下图:
配置Tomcat SSL
这里顺便介绍下,如果不是CA颁发的证书,怎样给Tomcat开启SSL。
首先本地生成一个证书,用到了JDK的keytool。
1 | # 生成.keystore文件 |
然后编辑配置文件server.xml
,把SSL打开,证书指向刚才生成的文件,密码为上一步配置的密码。顺便把8443全改为https默认的443,
1 | <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" |
此时重启Tomcat,访问页面如图:
接下来使用刚刚申请的CA证书,来制作配置Tomcat,需要使用到openssl工具。
1 | openssl pkcs12 -export -out certificate.pfx -inkey private.key -in certificate.crt -certfile ca_bundle.crt |
把配置文件改了,刚才的test.keystore替换为keystore.jks。重启Tomcat,访问页面如图: