【安装】
安装: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 domain.com -d "*.domain.com" --manual --preferred-challenges dns-01 certonly
使用:续签
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
因为验证域名所有者失败,没有指定 –manual-auth-hook 参数。Let’s Encrypt 有多种验证方式,常用的有 http 和 dns 方式。dns 方式就是创建 TXT 记录。
Alone 根据 DNSPod 提供的 API 写了一个脚本,解决了这个问题。