Let's Encrypt SSL证书申请安装
操作系统:Centos 7.5 64位
Web容器:Tomcat 8
git安装
#检查系统是否安装git,如果已经自带有git会出现git版本号,没有则需要我们自己安装 git --version #git 安装 yum install git
Python是否为2.7版本,不是则安装2.7
python -v
使用git下载脚步
git clone https://github.com/letsencrypt/letsencrypt
进入下载的目录
cd letsencrypt
使用letsencrypt-auto工具获取证书
此工具有以下几个重要的参数:run:获取并安装证书到当前的Web服务器 certonly:获取或续期证书,但是不安装 renew:在证书快过期时,续期之前获取的所有证书 -d DOMAINS:一个证书支持多个域名,用逗号分隔 --apache:使用 Apache 插件来认证和安装证书 --standalone:运行独立的 web server 来验证 --nginx:使用 Nginx 插件来认证和安装证书 --webroot:如果目标服务器已经有 web server 运行且不能关闭,可以通过往服务器的网站根目录放置文件的方式来验证 --manual:通过交互式方式,或 Shell 脚本手动获取证书
本次使用的是standalone方式进行验证,以下域名和email替换成你的即可:
./letsencrypt-auto certonly --standalone --email youremail@xx.com -d www.xx.com
standalone方式验证会启动一个webserver,占用80端口,所以当前运行的tomcat要关闭,否则验证不了。申请证书的域名要解析到你的这个服务器,否则也无法验证。
推荐使用webroot方式验证,输入以下命令
./letsencrypt-auto certonly --webroot --email youremail@xx.com -d www.xx.com
回车后,会提示让你输入web根目录,输入后会在根目录下生成.well-known目录和相关文件,验证完成后会自动删除。
生成成功的提示
出现以下提示表示成功,进入指定目录即可找到证书。IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/www.xx.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/www.xx.com/privkey.pem Your cert will expire on 2019-02-03. To obtain a new or tweaked version of this certificate in the future, simply run letsencrypt-auto again. To non-interactively renew *all* of your certificates, run "letsencrypt-auto renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
将证书生成tomcat可用的jks文件
##导出.p12格式的证书 openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out xx_letsencrypt.p12 -name tomcat_letsencrypt ##输入以上命令后会提示输入密码和确认密码,记住此密码,后续使用 ##再将证书由.p12格式转换成.jks格式 keytool -importkeystore -srckeystore xx_letsencrypt.p12 -srcstoretype pkcs12 -destkeystore xx_letsencrypt.jks ##输入以上命令后会提示要输入目标文件密码和确认密码,还要输入源文件的密码(生成.p12文件设置的密码)
到此jks生成完成,在tomcat server.xml配置即可。上面步骤至少输入5次密码,所有密码都弄成一样就行了,以免出错。
证书续期
证书的有效期只有90天,在快到期时要进行续期操作//更新所有域名 ./letsencrypt-auto renew --force-renew --webroot //更新指定域名 ./letsencrypt-auto certonly --force-renew --webroot -d www.xx.com
renew只有在快到期时才能续期,加上--force-renew表示强制续期,--webroot表示web根目录验证,会提示输入web根目录的路径。
执行上面的命令后会生成新的证书文件,然后根据步骤7生成tomcat用的jks文件
续期操作可以写成定期任务执行,以免人工操作。具体脚本后续补充。