操作系统Centos9 , Web服务器nginx
一、安装 Certbot 和 Nginx 插件
# CentOS 9 启用 EPEL
dnf install -y epel-release
# 安装 certbot 和 nginx 插件
dnf install -y certbot python3-certbot-nginx
二、申请证书
cs
certbot certonly --nginx \
-d fszy.cn \
-d yxln.cn \
--email your-email@example.com \
--agree-tos \
--no-eff-email
- 会得到一张证书,包含这 2个域名(多个域名可共用一个证书),路径类似:
/etc/letsencrypt/live/fszy.cn/fullchain.pem
/etc/letsencrypt/live/fszy.cn/privkey.pem
三、Nginx 配置示例
在每个 server 块里使用同一对证书,修改完后重启服务: nginx -t && systemctl reload nginx
server {
listen 443 ssl;
server_name fszy.cn; # 或其它域名
ssl_certificate /etc/letsencrypt/live/fszy.cn/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/fszy.cn/privkey.pem;
# 其它配置...
}
四、自动续期
- 测试续期命令(不真正续期)
cs
certbot renew --dry-run
- 续期、续期后自动重载 Nginx服务
cpp
#先确认服务路径
which certbot
which systemctl
#配置定时任务
crontab -e
0 3 * * * /usr/bin/certbot renew --quiet --deploy-hook "/usr/bin/systemctl reload nginx"
--quiet:这个选项让certbot以静默方式运行,不输出无关信息,只输出错误信息。
--deploy-hook "/usr/bin/systemctl reload nginx":这是一个钩子命令。当证书成功更新后,会执行deploy-hook后面指定的命令。
整个命令的作用:每天凌晨3点,自动检查证书是否需要更新(到期前30天内会自动更新),如果证书更新成功,则重新加载nginx配置,使新证书生效。