2团
Published on 2024-08-16 / 14 Visits
0
0

使用Certbot给Openresty申请SSL证书

1. 前言

最近腾讯云送的一年期证书过期,不想为此进行付费续期,因此尝试基于Certbot(https://certbot.eff.org)申请SSL证书。如果当前的代理系统是Nginx,操作相当简单。

可惜当前代理系统是Openresty,多次尝试均失败,因此只能尝试手动创建证书文件。失败操作如下所示:

image-pecm.png

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 ,此后可参照下图完成如下配置:

  1. 输入指定域名;

  2. 输入验证文件生成路径(与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 &


Comment