申请Let's Encrypt SSL证书

需要知识基础:Http、Https、SSL、域名解析、手动设置域名解析服务器、Nginx配置编写

申请证书的三种方式

dns-01:给域名添加一个 DNS TXT 记录。

http-01:在域名对应的 Web 服务器下放置一个 HTTP well-known URL 资源文件。

tls-sni-01:在域名对应的 Web 服务器下放置一个 HTTPS well-known URL 资源文件。

针对单一域名,需要指定网站的根目录:

$ sudo certbot --authenticator webroot --installer nginx

这样会自动在在域名对应的 Web 服务器下放置一个 well-known URL 资源文件。

通配符证书只能使用dns-01

通配符证书:

sudo certbot certonly  -d "*.livexia.xyz" --manual --preferred-challenges dns-01  --server https://acme-v02.api.letsencrypt.org/directory

需要给域名增加一个txt,dns解析,具体输入命令后会有细节

利用dig查询解析是否成功,解析成功在进行下一步操作

$ dig  -t txt _acme-challenge.xxx.com @8.8.8.8 

90天会到期,需要进行续期。

自动renewal:

$ sudo certbot renew --dry-run

Nginx配置文件的编写:

server {
    server_name xxx.com;
    listen 443 http2 ssl;
    ssl on;
    ssl_certificate /etc/cert/xxx.com/fullchain.pem;
    ssl_certificate_key /etc/cert/xxx.com/privkey.pem;
    ssl_trusted_certificate  /etc/cert/xxx.com/chain.pem;

    location / {
      proxy_pass http://127.0.0.1:6666;
    }
}

https://letsencrypt.org/getting-started/ https://certbot.eff.org/ https://www.dnspod.cn/console/dns/livexia.xyz

Update: 2021-12-20,准备移除Ghost,所以记录之前对证书自动刷新的命令,留有记录。

执行 crontab -e 增加如下内容,保证每周日0点对证书进行刷新

0 0 * * 0 sudo /home/ghost-mgr/.acme.sh/acme.sh --force --renew --home /etc/letsencrypt --domain [domain] --webroot /var/www/ghost/system/nginx-root --reloadcmd "nginx -s reload" --accountemail [email] --debug &> /home/ghost-mgr/renew.log

crontab参考网址:https://crontab.guru/#0_0___0s