前言
let's encrypt提供免费的证书真的很棒,不过,三个月要更新一次证书是不是有点麻烦,本文介绍,如何透过getssl,生成多域名的SAN证书设置,放入调度自动进行证书更新。
非常简单哦,六个步骤即可搞定。
注:在下方的过程中,我使用非root的权限进行设置,如果你需要使用root才能重启您的nginx主机,
请自行调整您安装的使用者,或者是web server的重启命令。
步骤
1. 透过git下载gessl,并且存成scripts。git clone https://github.com/srvrco/getssl scripts
2.第一次使用,运行如下命令
cd scripts
./getssl -c ccc.tc
请将上方哉名ccc.tc换成您自己的域名。
就会在您的家目录,创建.getssl的数据夹及ccc.tc的目录了
creating main config file /home/devin_yang/.getssl/getssl.cfg
Making domain directory - /home/devin_yang/.getssl/ccc.tc
creating domain config file in /home/devin_yang/.getssl/ccc.tc/getssl.cfg
3.用vim编辑设置,简单拷贝第二步显示的路径即可。
vim /home/devin_yang/.getssl/ccc.tc/getssl.cfg
4.以下的getssl.cfg设置仅供参考,请依您自己实际的主机目录及证书数据夹,进行调整。
#选取发送证书的主机
CA="https://acme-v01.api.letsencrypt.org"
#额外的域名
SANS="www.ccc.tc, devin.ccc.tc, mail.ccc.tc"
#设置ACME路径,因为我是安装在dlaravel的环境,ccc为我的project目录。
#记得要在public下,创建该目录.well-known/acme-challenge
ACL=('/home/devin_yang/dlaravel/sites/ccc/public/.well-known/acme-challenge')
USE_SINGLE_ACL="true"
#设置证书路径
CA_CERT_LOCATION="/home/devin_yang/dlaravel/etc/ssl/cert.crt"
DOMAIN_CHAIN_LOCATION="/home/devin_yang/dlaravel/etc/ssl/fullchain.pem"
DOMAIN_PEM_LOCATION="/home/devin_yang/dlaravel/etc/ssl/privkey.pem"
#D-Laravel的nginx重载命令
RELOAD_CMD="bash -c 'cd /home/devin_yang/dlaravel; ./console reload'"
#设置主机类型
SERVER_TYPE="https"
关於RELOAD_CMD,如果您并非使用D-Laravel(docker-compose环境),例如: nginx,重载方式在nginx应该是
nginx -s reload
,或在旧版CentOS或RedHat的Apache上,应该可以用service httpd graceful
。关於主机部份的相关设置及说明就不在说明了,本文我假定读者已设置好了let's encrypt的证书在主机上,只是要完成自动更新功能。
5.手动更新证书,并进行nginx主机重启
cd ~/scripts
./getssl ccc.tc
6.使用crontab放入调度每明检查,自动进行更新
15 5 * * * /home/devin_yang/scripts/getssl -u -a -q
补充:如果需强制更新证书,我们可以用-f参数,例如我的SAN又补了新的域名
getssl -f ccc.tc
关於nginx上的证书设置方式,可以参考我这篇:
如何设置nginx上的HTTPS,取得Qualys的SSL A+评分
No Comment
Post your comment