1. 前言
最近腾讯云送的一年期证书过期,不想为此进行付费续期,因此尝试基于Certbot(https://certbot.eff.org)申请SSL证书。如果当前的代理系统是Nginx,操作相当简单。
可惜当前代理系统是Openresty,多次尝试均失败,因此只能尝试手动创建证书文件。失败操作如下所示:
2. 安装步骤
2.1 Openresty配置更新
Certbot的使用前提最关键的几点:
域名已指向云主机;
80端口开放,可访问;
此外,需要对指定域名进行验证,以便Certbot访问给指定域名生成的验证文件(后续设置验证文件生成路径:/data/letsencrypt/2tuan-work
),配置文件概要内容如下所示:
server {
listen 80;
listen [::]:80;
server_name www.2tuan.work 2tuan.work;
location /.well-known/acme-challenge/ {
root /data/letsencrypt/2tuan-work;
}
location / {
return 301 https://$host$request_uri;
}
}
2.2 生成证书
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
执行以上命令,通过snap安装Certbot应用。
此后进入/data/letsencrypt/文件夹,执行指令certbot certonly --webroot
,此后可参照下图完成如下配置:
输入指定域名;
输入验证文件生成路径(与
Openresty
中配置的路径一致)。
执行以上命令,会在/etc/letsencrypt/live/www.2tuan.work/
文件夹下生成证书文件,具体如下图所示:
基于证书文件更新Openresty配置,具体如下:
重启Openresty,即可发现证书已生效。
3. 定期更新证书
生成的证书默认时效是三个月,因此需要定期对证书进行续签操作,通过crontab -e
添加定时任务(注意certbot执行renew操作,需要指定webroot地址):
0 */2 * * * certbot renew --dry-run --webroot -w /data/letsencrypt/2tuan-work > /dev/null 2>&1 &