Centos下使用Let‘s Encrypt、Certbot配置域名证书

# 安装git
yum install git

# 进入用户目录
cd ~

# 下载acme 官方地址 https://gitee.com/******/acme.sh.git(我自己的)
git clone https://github.com/acmesh-official/acme.sh

cd acme.sh

# 创建别名
alias acme.sh=~/acme.sh/acme.sh

# 注册账号 用自己的邮箱
# zerossl https://zerossl.com/
acme.sh --register-account -m example@mail.com --server zerossl

# 会返回账号指纹 返回数据如下
[2024年 0601日 星期六 11:21:10 CST] Create account key ok.
[2024年 0601日 星期六 11:21:10 CST] No EAB credentials found for ZeroSSL, let's get one
[2024年 0601日 星期六 11:21:12 CST] Registering account: https://acme.zerossl.com/v2/DV90
[2024年 0601日 星期六 11:21:16 CST] Registered
[2024年 0601日 星期六 11:21:16 CST] ACCOUNT_THUMBPRINT='*******************'

# 安装 epel
yum install epel-release

# 安装snapd
yum install snapd


sudo systemctl enable --now snapd.socket

# 创建链接
sudo ln -s /var/lib/snapd/snap /snap

cd /snap/

sudo snap install core

sudo snap refresh core

sudo snap install --classic certbot

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

certbot certificates

# 申请域名证书
# 需要在DNS中配置TXT解析,查看输出 
# nslookup -type=txt _acme-challenge.example.com 8.8.8.8 查看解析
# 注意返回的数据信息
#   Certificate is saved at: /etc/letsencrypt/live/xxx.xx/fullchain.pem
#   Key is saved at:         /etc/letsencrypt/live/xxx.xx/privkey.pem
# 注意配置到nginx的config中
#   ssl_certificate /etc/letsencrypt/live/xxx.xx/fullchain.pem;
#   ssl_certificate_key /etc/letsencrypt/live/xxx.xx/privkey.pem;
#   通过 nginx -t 校验配置
#   通过 nginx -s reload 启用配置

certbot certonly --preferred-challenges dns --manual -d *.***.***(泛域名) -***.***(主域名) --server https://acme-v02.api.letsencrypt.org/directory

# 开启自动更新
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew -q --deploy-hook 'systemctl reload nginx'" | sudo tee -a /etc/crontab > /dev/null

# 或者这个
echo 0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew 

# 查看任务信息
systemctl list-timers
​
# 更新
certbot renew
# 静默更新 
certbot renew -q

# 更新完执行脚本
certbot renew -q --deploy-hook 'systemctl reload nginx'
# 手动强制更新
certbot --force-renewal 

# 查看已经生成的证书(证书名称、域名、到期时间、证书路径)
certbot certificates

# 注销证书
certbot revoke --cert-path /etc/letsencrypt/live/example.com/fullchain.pem

# let's encrypt 的日志路径
/var/log/letsencrypt


//等待整理
certbot certonly --preferred-challenges dns --manual -d *.joylifeint.com -d joylifeint.com --key-type rsa --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run

//参考
https://github.com/justjavac/certbot-dns-aliyun?tab=readme-ov-file