按照https://certbot.eff.org/instructions?ws=nginx&os=centosrhel7的指引操作:
1、安装snapd
yum install epel-release
yum install snapd
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
snap install core; snap refresh core
2、安装CertBot
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
3、获取证书,配置站点,启用SSL
certbot --nginx
4、查看自动更新定时器
systemctl list-timers
5、删除证书
certbot delete
6、泛域名支持
6.1 下载 certbot-auth-dnspod
6.2 修改certbot-auth-dnspod
6.2.1 修改
DOMAIN=$(expr match "$CERTBOT_DOMAIN" '.*\.\(.*\..*\)')
TXHOST=$(expr match "$CERTBOT_DOMAIN" '\(.*\)\..*\..*')
为
CERTBOT_DOMAIN=${CERTBOT_DOMAIN/\*\./}
DOMAIN=$(echo $CERTBOT_DOMAIN | rev | cut -d'.' -f -2 | rev)
TXHOST=$(echo $CERTBOT_DOMAIN | rev | cut -d'.' -f 3- | rev)
SUFFIX=$(echo $CERTBOT_DOMAIN | rev | cut -d'.' -f 2 | rev)
if [[ "$SUFFIX" = "com" || "$SUFFIX" = "net" || "$SUFFIX" = "org" || "$SUFFIX" = "gov" || "$SUFFIX" = "edu" ]]; then
DOMAIN=$(echo $CERTBOT_DOMAIN | rev | cut -d'.' -f -3 | rev)
TXHOST=$(echo $CERTBOT_DOMAIN | rev | cut -d'.' -f 4- | rev)
fi
否则类似domain.com.cn这样的域名不能正确识别
6.2.2 修改
-d "$PARAMS&domain=$DOMAIN&record_id=$RECORD_ID" \
改为
-d "$PARAMS&domain=$DOMAIN&record_id=$RECORD_ID&lang=en" \
否则执行时会提示错误
6.3 配置DNSPOD API
将DNSPOD上得到的ID和Token保存入配置文件
echo "ID,Token" > /etc/dnspod_token
6.4 获取证书
certbot certonly --manual --preferred-challenges dns-01 --email yourname@domain.com --server https://acme-v02.api.letsencrypt.org/directory --manual-auth-hook /path/to/certbot-auth-dnspod.sh --manual-cleanup-hook "/path/to/certbot-auth-dnspod.sh clean" -d domain.com -d *.domain.com
可以设置命令别名
vi ~/.bashrc
添加
alias getcert='certbot certonly --manual --preferred-challenges dns-01 --email yourname@domain.com --server https://acme-v02.api.letsencrypt.org/directory --manual-auth-hook /path/to/certbot-auth-dnspod.sh --manual-cleanup-hook "/path/to/certbot-auth-dnspod.sh clean"‘
以后就可以用简化的命令来更新证书了
getcert -d domain.com -d *.domain.com
6.5 修改nginx的站点配置文件,指向新证书
参考:https://www.xiaocaicai.com/2021/04/使用lets-encrypt和dnspod来自动获取ssl证书/