为什么必须启用 HTTPS
没有 HTTPS 的站点,浏览器会标注「不安全」,Google 已把 HTTPS 作为排名信号之一,支付与表单提交在明文通道下也存在被窃听的风险。Let’s Encrypt 提供免费证书,配合 certbot 可以做到全自动签发与续期,没有理由不启用。
安装 certbot
以 CentOS/Ubuntu 为例,优先使用系统包管理器安装 certbot 与其 Nginx 插件。安装后用 certbot –nginx 命令交互式选择域名,certbot 会自动修改 Nginx 配置、完成域名验证并写入证书路径。域名验证要求 80 端口可从公网访问,若服务器有防火墙或云安全组,需先放行 80。
配置强制跳转 HTTPS
签发成功后,把 80 端口站点返回 301 跳转到 https,确保所有 HTTP 访问都被引导到加密通道。若 certbot 已自动写入跳转,检查生成的 server 块即可;若自行配置,用 return 301 https://$host$request_uri; 的形式,注意保留 $request_uri 避免丢失查询参数。
推荐的 server 配置要点
- ssl_protocols 仅启用 TLSv1.2 与 TLSv1.3
- 配置 ssl_ciphers 使用强加密套件并开启 ssl_prefer_server_ciphers
- 启用 HSTS 前先确认全站 HTTPS 正常,否则会把 HTTP 访问锁死
- 配置 ssl_session_cache 复用会话,降低握手开销
- 开启 HTTP/2 获得多路复用收益
自动续期
Let’s Encrypt 证书有效期 90 天。certbot 安装时通常会创建 systemd timer 或 cron 任务执行 renew。验证方式是运行 certbot renew –dry-run,看到成功提示即说明续期流程可用。默认续期检查每天运行两次,只有在证书剩余不足 30 天时才真正续签。若你改过 Nginx 配置导致续期流程失败,certbot 不会自动修好,需要留意通知邮件。
常见报错排查
| 现象 | 可能原因 |
|---|---|
| 验证失败 403/404 | 80 端口未放行,或已有配置把 /.wellmark 路径转发走 |
| 提示 connection refused | Nginx 未运行或未监听 80 |
| 续期失败 | 域名 DNS 解析变更、端口被占、配置语法错误 |
| 浏览器仍提示不安全 | 页面存在混合内容(HTTP 资源),需改为 HTTPS |
上线后检查
用外部工具检测证书链是否完整、到期时间是否正确,并手动访问一次 HTTP 确认跳转生效。把证书到期时间加入监控日志,即便自动续期在,也不该完全无人值守——续期失败往往在几周后才暴露。