用Certbot申请免费泛域名证书

用Certbot申请免费泛域名证书

2021年02月11日

之前使用certbot一直是单域名,某次看到说certbot早就支持泛域名了,于是重新折腾一波。

大概步骤

  1. 前置条件
    一个可以由自己支配的域名

  2. 安装certbot
    cetbot官网指引即可
    这里安装的版本是1.12.0, 运行命令certbot --version可查

  3. 配置对应dns-provider的凭据
    新建文件/etc/letsencrypt/dnspod.ini并在里边配置两个值

    /etc/letsencrypt/dnspod.ini
    1
    2
    dns_dnspod_email="ur email binded with the account"
    dns_dnspod_api_token="ID,TOKEN"

可自行选择凭据文件的存放位置,关于获取凭据
dnspod是在下边这个地址生成
https://www.dnspod.cn/console/user/security

  1. 运行命令生成
    1
    certbot certonly -d writeyoursmile.com -d *.writeyoursmile.com
    运行期间会提示填入dns-provider的凭据文件路径, 即/etc/letsencrypt/dnspod.ini
  1. 将生成的证书配置到对应服务器(比如Nginx)

    1
    2
    3
    4
    5
    6
    server{
    # ...
    ssl_certificate /etc/letsencrypt/live/writeyoursmile.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/writeyoursmile.com/privkey.pem;
    # ...
    }
  2. 配置自动证书续期
    certbot已经配置了定时任务会在过期之前自动续期。
    定时任务每天跑两次,不过只会在证书到期前30天才会自动续期,平时只是检查。

这些细节可以在官网对应的指引页面提到, 比如这个

  1. 配置续期之后自动reload nginx
    在目录/etc/letsencrypt/renewal-hooks/deploy下放shell脚本即可,文件名随意
    /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
    1
    nginx -s reload