怎样使用Certbot签发和续期证书

2020年7月21日 | 分类: 【技术】

【安装】

安装:snaps

yum install epel-release -y && yum install snapd -y

启用snapd.socket:

systemctl enable --now snapd.socket

创建 /var/lib/snapd/snap 和 /snap 之间的链接:

ln -s /var/lib/snapd/snap /snap

退出账号并重新登录,或者重启系统,确保snap启用。

安装 snap :

sudo snap install core

更新 snap :

sudo snap refresh core

安装:certbot

通过snap安装certbot:

sudo snap install --classic certbot

创建 /snap/bin/certbot 的软链接,方便 certbot 命令的使用:

ln -s /snap/bin/certbot /usr/bin/certbot

【使用】

使用:签发证书(指定域名)

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

参考:https://amon.org/le

使用:续签

1. 安装 Certbot DNS Authenticator For DNSPod

cd /usr/local/nginx/ssl/
wget https://raw.githubusercontent.com/al-one/certbot-auth-dnspod/master/certbot-auth-dnspod.sh
chmod +x certbot-auth-dnspod.sh

2. 获得API

申请网址:https://www.dnspod.cn/console/user/security

名称: certbot
ID:888888
Token:fce79d8c1d2e32978fde3c2dc2297027
创建时间: 2020-02-02 02:02:02

编辑 certbot-auth-dnspod.sh ,第 36 行:

    API_TOKEN="fce79d8c1d2e32978fde3c2dc2297027"

3. 续签

/certbot-auto renew --manual-auth-hook /usr/local/nginx/ssl/certbot-auth-dnspod.sh

使用:自动更新证书

意图:借助 Crontab 来编写一个定时任务,定期强制更新证书,然后重启 Nginx。这样就完成了 SSL 安全证书更新了。

Crontab 通过 crontab -e 命令编辑,通过 crontab -l 查看。

使用crontab -e 命令:

0 0 1 * * certbot renew
10 0 1 * * systemctl restart nginx

【排错】

报错:Another instance of Certbot is already running.

寻找 certbot.lock 文件:

find / -type f -name ".certbot.lock"

寻找并删除 certbot.lock 文件:

find / -type f -name ".certbot.lock" -exec rm {} \;

Certbot进行证书续期时报错:An authentication script must be provided with –manual-auth-hook

参考:https://learnku.com/articles/16996/certbot-application-for-https-certificate-renewal-error-reporting-solution

因为验证域名所有者失败,没有指定 –manual-auth-hook 参数。Let’s Encrypt 有多种验证方式,常用的有 http 和 dns 方式。dns 方式就是创建 TXT 记录。
Alone 根据 DNSPod 提供的 API 写了一个脚本,解决了这个问题。