76 让站点使用https安全加密访问之自动更新证书 - xiaoxin01/Blog GitHub Wiki
之前有一篇文章介绍如何在线申请ssl证书,见让站点使用https安全加密访问,这种方式的特点是简单,按照向导就可以生成证书,但是证书过期需要再次重新申请及更新证书。
本文介绍如何用getssl工具申请证书及自动更新证书。
安装GetSSL
打开bash,执行:
curl --silent https://raw.githubusercontent.com/srvrco/getssl/master/getssl > getssl ; chmod 700 getssl
这条命名下载脚本并添加脚本的执行权限。
初始化配置文件
对于要申请证书的domain,使用 -c 命令创建一个默认的配置文件:
./getssl -c www.supperxin.com
这条指令会生成如下内容:
~/.getssl
~/.getssl/getssl.cfg
~/.getssl/www.supperxin.com
~/.getssl/www.supperxin.com/getssl.cfg
/.getssl/getssl.cfg文件为默认配置,/.getssl/www.supperxin.com/getssl.cfg文件为domain的配置,在domain的配置中没有声明的内容,会读取默认配置。
配置domain的配置文件
~/.getssl/www.supperxin.com/getssl.cfg为domain的配置,主要修改如下内容:
https://acme-v01.api.letsencrypt.org"的注释,配置证书服务器为正式服务器。
取消#CA="配置多个Domain
如果有多个domain需要申请,则配置SANS字段,用逗号隔开,比如SANS="cdn.supperxin.com"
配置所有权认证
配置ACL字段,需要将其配置到网站路径下,以便getssl服务可以通过此路径验证网站所有权。
需要注意的是,这个字段需要对应SANS字段,第一行为主domain(www.supperxin.com)的认证位置,其后每一行为SANS中配置的位置。本文需要认证www.supperxin.com,cdn.supperxin.com,所以需要配置两行:
ACL=('/var/www/www.supperxin.com/web/.well-known/acme-challenge'
'/var/www/www.supperxin.com/web/.well-known/acme-challenge')
其中 /var/www/www.supperxin.com/web/ 为网站的根目录。
配置Nginx
ACL生成的内容需要配置Nginx,以便可以从Web访问到,在Nginx的配置文件中添加:
location /.well-known/acme-challenge/ {
root /var/www/www.supperxin.com/web/;
add_header Content-Type text/plain;
}
配置好之后,运行
service nginx reload
然后可以在/var/www/www.supperxin.com/web/.well-known/acme-challenge/目录下添加一个测试文件试试看从Web是否可以直接访问到。
生成证书
都配置好以后,只需要执行:
./getssl www.supperxin.com
就会在~/.getssl/www.supperxin.com/目录下生成私钥和证书。
配置corn自动更新证书
getssl -a可以直接更新所有的证书,利用linux的corntab可以实现每个月更新一次:
23 5 1 * * /path/to/getssl -u -a -q