# 痛痛痛
之前一直使用阿里云的免费证书,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 |
由于我已经安装过了,再执行提示保持现状或者更新替换
# 验证
使用以下命令检查证书有效期
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"
# 参考
tencent cloud
Nginx配置使用certbot自动申请HTTPS证书
csdn
acme证书相关错误