Tomcat 使用 certbot 部署Let’s Encrypt生成免费SSL证书,Tomcat配置HTTPS

Let’s Encrypt 作为新的证书颁发机构,免费,自动,开放,这三点对于个人用户来说尤为重要。免费自不用说,自动更是免去了很多过程和麻烦。官网目前推荐的获取和安装方式是 certbot ,只需要简单运行一些命令并作一些配置即可。

环境

  • 阿里云服务器(我的是centOS)
  • Tomcat

前提

  • 系统中已经装好JDK
  • 已经解析好域名
  • 配置服务器中的安全组,开放80端口和443端口(Tomcat中的端口配置用到这两个端口)
  • Tomcat可以正常运行,并且可以用解析好的域名访问

安装certbot

使用自动安装脚本

一、下载自动安装脚本

wget https://dl.eff.org/certbot-auto

二、授予脚本执行权限

chmod a+x certbot-auto

三、执行脚本

./certbot-auto

执行这个脚本会自动下载安装依赖,中间需要输入几次“y”来确认下载操作,最后可能会卡在“Installing Python packages”几分钟,不要终止操作让它安装完成!

申请ssl

一、

./certbot-auto certonly --standalone --email [email protected] -d oumuv.xin

附上邮件和域名
执行脚本会弹出的两个选项 一个选择同意 A 另外一个选择 Y 就行。下图所示就是成功后的结果,可以看到生成的一个fullchain.pem和一个privkey.pem文件存放在/etc/letsencrypt/live/oumux.xin/中

Tomcat 使用 certbot 部署Let’s Encrypt生成免费SSL证书,Tomcat配置HTTPS

二、

将文件复制出来,我就复制到Tomcat目录下:

cp fullchain.pem  /usr/local/tomcat8/conf/letsencrypt
cp privkey.pem  /usr/local/tomcat8/conf/letsencrypt

三、进入该目录下,执行命令生成.p12文件

此命令会要求输入一个密码,我这里就取“123456”

openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out fullchain_and_key.p12 -name tomcat

四、生成.jks证书

keytool -importkeystore -deststorepass 'yourJKSpass' -destkeypass 'yourKeyPass' -destkeystore MyDSKeyStore.jks -srckeystore fullchain_and_key.p12 srcstoretype PKCS12 -srcstorepass 'yourPKCS12pass' -alias tomcat

这里的yourPKCS12pass就是上一步中设置的密码,yourJKSpass密码和yourKeyPass也可以跟yourPKCS12pass一样

Tomcat配置

修改或增加配置:

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="org.apache.coyote.http11.Http11Protocol" 
URIEncoding="UTF-8" maxThreads="150" SSLEnabled="true" 
scheme="https" secure="true" clientAuth="false" 
sslProtocol="TLS" 
keystoreFile="/usr/local/tomcat8/conf/letsencrypt/MyDSKeyStore.jks" 
keystorePass="123456" 
keyAlias="tomcat" 
keyPass="123456"/>

重启Tomcat,测试

直接访问https://oumuv.xin/成功进入Tomcat页面