证书过期是那种"平时没人管,出事全站瘫痪"的典型问题。浏览器直接拦一层红色警告,用户不敢点,流量瞬间归零。而这件事完全可以自动化,配一次,后面不用管。
一、两种证书怎么选
| 类型 | 价格 | 适用 | 续期 |
|---|---|---|---|
| DV 单域名 | 免费(Let's Encrypt) | 普通企业站、博客 | 90 天,可自动 |
| DV 通配符 | 免费或几百元 | 有多个子域名 | 90 天或 1 年 |
| OV/EV | 千元以上 | 金融、政企、需要展示组织信息 | 1 年 |
九成企业站用免费 DV 就够。免费不等于不安全,加密强度是一样的,区别只在身份验证深度和保险额度。
二、宝塔里怎么部署
路径:网站 → 设置 → SSL → Let's Encrypt → 勾选域名 → 申请。整个过程一分钟,前提是域名已解析到这台服务器,且 80 端口可访问(验证需要)。
如果申请失败,按这三个原因排查:
- 域名没解析或解析未生效(用 ping 验证)。
- 80 端口被安全组或防火墙拦截。
- 同一域名申请次数过多,触发 Let's Encrypt 的频率限制(每周 5 次)。
三、强制 HTTPS 跳转
装好证书不等于全站 HTTPS。还要做两件事:
1. 开强制跳转
宝塔 SSL 页面有"强制HTTPS"开关,打开即可。手动配置的话:
# Nginx
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
2. 处理混合内容
页面里如果有 http 的图片、JS、CSS,浏览器会提示"不安全"。用开发者工具 Console 找 Mixed Content 警告,把资源地址改成 https 或相对路径。
数据库里存量文章的图片地址如果是 http,需要批量替换。改之前先备份,替换后抽查二十篇。
四、自动续期怎么配
Let's Encrypt 证书 90 天到期。宝塔默认会在到期前 30 天自动续期,但要确认计划任务里真的有这条任务。
检查路径:计划任务 → 看有没有 "ssl" 相关的续期任务。没有就手动加一条,每月执行一次:
bash /www/server/panel/script/rememory.sh
# 或直接用宝塔的续期命令
/www/server/panel/pyenv/bin/python /www/server/panel/class/panelSite.py
更稳的做法是用 acme.sh 自己管,可靠性更高,也方便监控。
五、证书过期了怎么办
三步止损:
- 立刻重新申请一张证书并部署,通常十分钟内恢复。
- 如果申请不下来(比如域名解析有问题),先临时用另一张有效证书顶上,或者临时关掉强制跳转,让 http 可用。
- 恢复后检查搜索引擎是否抓到大量证书错误页面,必要时在资源平台提交死链。
预防的办法很简单:加一个到期提醒。用第三方监控工具监控域名证书剩余天数,低于 15 天发告警。
六、几个容易忽略的细节
- 带 www 和不带 www 都要覆盖。申请时两个域名都勾上,否则跳转后会证书不匹配。
- 子域名单独申请。除非用通配符证书,否则
blog.xxx.com需要单独一张。 - CDN 上的证书要单独配。源站证书和 CDN 边缘证书是两回事,很多人只配了源站。
证书自动续期也会失败
验证文件被删、80 端口被关、域名解析变了,都会让续期失败。配一个到期前 15 天的提醒,每季度手动续一次测试。
还要检查混合内容:页面里有一张 http 图片,浏览器就会提示不安全。
常见问题
免费证书会不会被浏览器不信任
不会。Let's Encrypt 是受信任的根证书机构,主流浏览器都认。
装了证书网站变慢
HTTPS 握手确实有开销,但开启 HTTP/2 和 OCSP Stapling 后基本可以忽略。现在的服务器性能,这不是瓶颈。
能不能一直用 http
不建议。浏览器会把 http 站标记为"不安全",用户信任度下降,谷歌也把 HTTPS 作为排名信号。
证书配好,安全设置也别落下。七项必改项见宝塔面板安全设置。