Linux上结合Nginx配置域名证书并自动续期
复制为 Markdown核心原理: Let’s Encrypt 提供有效期为90天的免费证书。虽然期限短,但这正是其安全策略的一部分。幸运的是,我们可以利用 Certbot 这个强大的工具来自动化申请、部署和续签流程。
准备工作:
- 拥有一个域名:在大陆服务的话还需要先备案,这是域名能公网访问的关键。
- 域名已正确解析到服务器IP: 确保您在域名注册商处的DNS A记录指向了您当前服务器的公网IP地址。
- 服务器环境: 推荐使用 Nginx,Certbot 对 Nginx 支持良好。您需要有服务器的管理员权限。
安装 Certbot 及其 Nginx 插件
Certbot 是 Let’s Encrypt 官方推荐的客户端工具,可以自动处理证书的获取、安装和续订。
- CentOS/RHEL (yum)
bash
sudo yum install certbot python3-certbot-nginx
Ubuntu/Debian (apt):bash编辑
- Ubuntu/Debian (apt):
bash
sudo apt update
sudo apt install certbot python3-certbot-nginx
申请并部署 SSL 证书
Certbot 可以直接修改您的 Nginx 配置文件来启用 HTTPS。
- 停止 Nginx 服务(可选但推荐): 有时 Certbot 需要临时启动一个小型 Web 服务器来完成域名验证,确保 Nginx 停止可以避免端口冲突。验证通过后,Certbot 会自动帮你重启 Nginx。
bash
sudo systemctl stop nginx
- 运行 Certbot 申请证书: 将 yourdomain.com 替换为您自己的域名。如果还有子域名(如 www.yourdomain.com),可以一起加上,用空格隔开(带上
-d参数)。
bash
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com -d other.youdomain.com
按照提示操作:
-
输入邮箱地址(用于紧急通知)。
-
同意服务条款。
-
询问是否同意共享邮箱(可选)。
-
关键一步: Certbot 会询问您希望如何配置 HTTPS:
No redirect - 保留 HTTP 和 HTTPS 两种访问方式。
Redirect - 强烈推荐。选择此项,Certbot 会自动在 Nginx 配置中添加规则,将所有 HTTP 请求重定向到 HTTPS。
Certbot 会自动完成域名验证、获取证书、配置 Nginx 并重新加载服务。
如果 Nginx 没有自动启动的话,可以手动启动:
bash
sudo systemctl start nginx
配置自动续签
Let’s Encrypt 证书只有90天有效期,因此必须配置自动续签。
- 创建 Cron 任务: 使用 crontab 来设置定时任务。
bash
sudo crontab -e
- 添加续签命令: 在打开的编辑器中,添加以下行。这表示每天凌晨2点执行一次续签检查,只有当证书快过期时才会真正更新。
bash
0 2 * * * /usr/bin/certbot renew --quiet --deploy-hook "systemctl reload nginx"
–quiet: 静默模式,不输出日志信息。
–deploy-hook “systemctl reload nginx”: 这个钩子函数非常重要。当证书成功续签后,它会自动重载 Nginx 配置,使新证书生效,无需人工干预。
- 测试自动续签(仅测试,不会实际更新证书)
bash
sudo certbot renew --dry-run
如果此命令没有报错,这说明自动续签成功。
最热文章
本站文章遵循 Apache 2.0 开源协议,转载请注明出处,商业化出版请联系本站管理员(页面底部)
鄂公网安备42098402000265号