# 痛痛痛

之前一直使用阿里云的免费证书,12 个月有效期,24 年底变为 3 个月,这就会导致手动变更频次增加,试过 2 次之后就想换掉
且之前手动替换,需要先在阿里云申请好证书,下载,上传到 Oracle Cloud 服务器,手动重启 nginx,比较麻烦

# 痛定思痛

查阅资料 letsencrypt-certbot 能够解决我目前的现状
letsencrypt 可以申请免费的证书,certbot 可以实现自动化无需投入精力关注

# 安装

# certbot 安装并运行

命令行提示符
sudo yum install epel-release
sudo yum install -y python3 python3-devel libffi-devel openssl-devel gcc
sudo python3 -m pip install --upgrade --force-reinstall pip
# 可直接运行 sudo pip3 install certbot
# 我的是在 /usr/local/bin/ 下,未配置环境变量,所以使用全路径,包括后面的 certbot 也是,不再赘述
sudo /usr/local/bin/pip3 install certbot
# 由于我的域名是在 aliyun 解析的,所以还需要安装 certbot-dns-aliyun,另对应的配置文件如下文
sudo /usr/local/bin/pip3 install certbot-dns-aliyun
# 修改 aliyun 配置文件
sudo vim /usr/local/share/aliyun/aliyun.ini
chmod 600 aliyun.ini
sudo /usr/local/bin/certbot certonly --authenticator dns-aliyun --dns-aliyun-propagation-seconds 60 --dns-aliyun-credentials /usr/local/share/aliyun/aliyun.ini -d *.aaa.com -d aaa.com

由于我已经安装过了,再执行提示保持现状或者更新替换
certbot.png

# 验证

使用以下命令检查证书有效期

命令行提示符
sudo openssl x509 -enddate -noout -in /etc/letsencrypt/live/aaa.com/fullchain.pem

# aliyun 相关

在 aliyun 控制台创建 RAM 用户,凭证管理创建 accesskey

accesskeyid 管理,在服务器 /usr/local/share/aliyun/aliyun.ini 配置

dns_aliyun_access_key = yourAccessKey
dns_aliyun_access_key_secret = yourAccessKeySecret

# nginx 配置

ssl_certificate、ssl_certificate_key 换成 letsencrypt 的 2 个 pem 地址

# 配置自动续签

certbot 只有 90 天的有效期,但它 2 有自动续费的命令,无需再次运行 certbot 重新签证书
但如果每 3 个月更新一次,7、8 月会导致有几天证书失效无法访问,所以设定每 2 个月续一次

编辑 crontab 内容

命令行提示符
crontab -e
#添加以下,每2个月的1号,凌晨4点0分,续签
0 4 1 */2 * /usr/local/bin/certbot renew --force-renewal --renew-hook "/usr/local/nginx/sbin/nginx -s reload -c /usr/local/share/nginx/nginx-1.24.0/conf/nginx.conf"

# 参考