添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
俊逸的小马驹  ·  Stack Overflow 的 ...·  2 周前    · 
苦闷的猕猴桃  ·  Install/Update ...·  3 周前    · 
重感情的苦瓜  ·  zhibo.24.jdwwinvest.cn ...·  1 月前    · 
含蓄的酸菜鱼  ·  通过github ...·  1 月前    · 
卖萌的芹菜  ·  “资源管理器”视图·  2 周前    · 
悲伤的甜瓜  ·  Closer吉他谱_The ...·  2 月前    · 
空虚的梨子  ·  photoshop ...·  4 月前    · 
严肃的筷子  ·  Failed to bind to ...·  1 年前    · 

安装Certbot

用以下命令安装就可以了,某些时候snap install的时候可能比较慢,有时候还可能需要重试几次:

1
2
3
4
apt install snapd
snap install core
snap refresh core
snap install --classic certbot

安装完成后,运行下 certbot --version 命令,如果有版本号输出,就表明安装成功了。

安装Cloudflare插件

为了实现自动化地续签证书,需要安装下对应DNS服务商的插件才可以。我使用Cloudflare来做DNS解析,所以可以使用以下的命令来安装Cloudflare插件:

1
2
3
snap set certbot trust-plugin-with-root=ok

snap install certbot-dns-cloudflare

设置Cloudflare API令牌

要使用Cloudflare插件,需要先登录到Cloudflare控制台来生成一个仅可操作DNS解析的API 令牌。可在登录Cloudflare后,跳转到这个地址来进行创建: https://dash.cloudflare.com/profile/api-tokens

以下是操作过程的简单演示:

创建完成后记得将出现的令牌复制下来。然后使用以下命令来创建配置文件:

1
2
3
mkdir -p ~/.secrets/certbot

vim ~/.secrets/certbot/cloudflare.ini

填入如下格式的配置就可以了:

1
dns_cloudflare_api_token = 刚才获取到的API令牌

编辑完成后,可以修改下这个文件的权限,否则执行certbot命令时会报一个警告说文件权限不安全:

1
chmod 600 ~/.secrets/certbot/cloudflare.ini

获取证书

现在通过运行以下的命令就可以生成nginx所需的证书了:

1
2
3
4
5
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
--dns-cloudflare-propagation-seconds 60 \
-d knktc.com

注意,这里用了 --dns-cloudflare-propagation-seconds 60 把等待时间延长到了60秒,否则默认的10秒有些时候会导致校验失败。

生成的证书和私钥会放到/etc/letsencrypt/live/YOUR_HOST目录下。

贴一段nginx相关配置,备查:

1
2
3
4
5
6
7
8
9
listen 443 ssl http2;
server_name knktc.com;
ssl_certificate /etc/letsencrypt/live/knktc.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/knktc.com/privkey.pem; # managed by Certbot

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
keepalive_timeout 70;
ssl_session_timeout 5m;

定时任务

通过以下命令可以查看certbot的定时任务是否添加成功了:

1
systemctl list-timers

如果要在每次生成新的证书后自动reload下nginx,可以加个hook脚本:

1
vim /etc/letsencrypt/renewal-hooks/post/reload-nginx

加入以下的脚本:

1
2
3
#!/bin/sh

systemctl reload nginx

然后给这个脚本文件加上权限:

1
chmod +x /etc/letsencrypt/renewal-hooks/post/reload-nginx

这样的话,每次生成新的证书后,就会自动reload下nginx让新的证书生效了。