sudo yum install epel-release sudo yum install certbot python3-certbot-nginx sudo cp /etc/letsencrypt/live/yourdomain.com/fullchain.pem /etc/letsencrypt/live/yourdomain.com/fullchain.pem.bak sudo cp /etc/letsencrypt/live/yourdomain.com/privkey.pem /etc/letsencrypt/live/yourdomain.com/privkey.pem.bak 使用Certbot自动更新:Certbot支持自动检测证书有效期(默认3个月),执行以下命令更新指定域名的证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com 命令会自动完成以下操作:
fullchain.pem和privkey.pem);ssl_certificate和ssl_certificate_key路径;手动替换证书文件(若未使用Certbot自动管理):
将新证书文件复制到Nginx配置的路径(通常为/etc/letsencrypt/live/yourdomain.com/),并设置正确的权限:
sudo cp new_certificate.crt /etc/letsencrypt/live/yourdomain.com/fullchain.pem sudo cp new_private_key.key /etc/letsencrypt/live/yourdomain.com/privkey.pem sudo chmod 600 /etc/letsencrypt/live/yourdomain.com/privkey.pem # 私钥权限必须严格 更新证书后,务必测试Nginx配置文件的语法正确性,避免因配置错误导致服务中断:
sudo nginx -t 若输出显示syntax is ok和test is successful,则表示配置无误。
配置测试通过后,重新加载Nginx以应用新证书(无需停止服务,不影响现有连接):
sudo systemctl reload nginx https://yourdomain.com,点击地址栏的锁图标,查看证书有效期是否更新。openssl命令查看证书详情:openssl s_client -connect yourdomain.com:443 -servername yourdomain.com | openssl x509 -noout -dates 输出中的notAfter字段应显示新证书的过期时间。Let’s Encrypt证书有效期为3个月,需定期更新以避免服务中断。推荐通过定时任务自动执行更新:
测试自动更新(模拟执行,不实际更新):
sudo certbot renew --dry-run 若输出显示“Congratulations, all renewals succeeded”,则表示自动更新配置正确。
添加定时任务:使用crontab设置每周日凌晨2点执行更新,并重启Nginx:
sudo crontab -e 添加以下内容(每周日凌晨2点更新证书,3点重启Nginx):
0 2 * * 0 /usr/bin/certbot renew >> /var/log/certbot-renew.log 2>&1 0 3 * * 0 /usr/sbin/systemctl reload nginx >> /var/log/nginx-reload.log 2>&1 保存后,定时任务会自动生效。
ssl_certificate和ssl_certificate_key路径与Certbot生成的路径一致(通常为/etc/letsencrypt/live/yourdomain.com/)。privkey.pem)的权限必须设置为600,否则Nginx无法读取。/var/log/letsencrypt/letsencrypt.log)和Nginx错误日志(/var/log/nginx/error.log)定位问题。