Defaults.Exposed › 修复 › TLS 证书健康度
如何修复 TLS 证书健康度
你的 SSL/TLS 证书是一张数字身份证,向访客证明他真的在和你的网站对话——而不是冒牌货——并驱动浏览器里那把锁。本项检查关注的是:这张证书是否有效且受信任、是否即将过期,以及是否用强壮、现代的密码学构建。
对您业务的关键影响: 一张损坏或过期的证书会用一个全屏的红色「您的连接不是私密连接」警告替换掉你的网站。多数访客会立刻离开、不再回来——线上销售停摆、注册停摆,而那个本该私密的连接还可能被悄悄拦截。
这会让您付出什么代价
- 你的证书在一个周末悄悄过期;到周一,每个访客都撞上一个全页安全警告,你的结账和联系表单全瘫了,每过一小时才有人注意到并续期,你就在丢销售。
- 一个在咖啡馆或酒店 Wi-Fi 上付款的客户收到警告,说你的证书与你的域名不符——他以为你的网站是假的或被黑了,放弃了购买,还告诉别人它「看着不靠谱」。
- 一个大客户的 IT 团队在签约前做安全扫描,看到一张自签名或不受信任的证书,把你标为风险——这笔生意就卡在一个零成本就能修好的问题上。
- 你的证书用了过时的签名方法或孱弱的密钥;现代浏览器开始对它显示警告,一次安全审计因为这早已被踢出推荐名单多年的密码学给你扣分。
- 你收取卡支付,而你的支付服务商重新审计你;一把弱密钥或一张过期证书违反了支付安全规则,你的线上结账被冻结,直到改正为止。
为什么它重要。 证书是你网站安全中最显眼的一块——健康时它隐形,损坏时它会用一个吓人的警告把你整个网站拖垮,把客户直接赶向竞争对手。证书过期是网站意外宕机的头号原因,而它完全可以预防。拿一张有效证书是免费的,而保持它健康,多半只是让它自动续期的事。
这是什么,大白话版
当有人访问你的网站时,要让他放心输入密码或卡号,得发生两件事。第一,连接必须加密,让陌生人读不到它。第二——也是人们容易忘的部分——访客的浏览器必须确信另一端真的是你的网站,而不是一个搭起的、以假乱真的冒牌货。同时完成这两件事的东西,就是你的 TLS 证书(常被叫做「SSL 证书」)。
把它想象成你域名的防伪身份证。一家公认机构颁发它,它盖着你的域名和一个到期日,并携带打乱连接的那把加密密钥。一切核对无误时,浏览器显示那把锁,你的网站正常加载。身份证出了问题时,浏览器会做与安抚访客相反的事——它弹出一个全屏警告,实质上是说,「此网站可能不安全。」
本项检查关注这张身份证的健康度,覆盖四件各自独立、任一都能让它失效的事:
- 它有效且受信任吗?——由公认机构签发、匹配你的确切域名、非自签名、未过期。
- 它快过期了吗?——因为一张失效的证书会把你整个网站拖垮。
- 它用强方法签名了吗?——旧签名算法可被伪造。
- 它的密钥够强吗?——一把弱密钥原则上可被攻破。
先把好消息说在前头:拿一张健康证书是免费的,而保持它健康,多半只是让它自动续期、不必任何人记着的事。
这会让你付出什么代价
-
周末宕机。 一张证书在周五深夜悄悄到了到期日。本该跑的续期没跑(服务器搬了、脚本坏了、没人注意到)。到周六早上,每个访客——以及每个 Google 爬虫——看到的是一个全页红色警告,而不是你的首页。你的店关了,你却还不知道。技术修复只要几分钟;丢掉的一个周末的销售、以及那些认定你「倒闭了」的客户,却回不来了。
-
被放弃的结账。 一个客户正用手机在酒店 Wi-Fi 上购物。你的证书与他敲入的域名不太匹配(比如它覆盖
shop.yourbiz.com却不覆盖他用的光秃秃的yourbiz.com)。浏览器警告他网站「可能在冒充」你的。对一个不懂技术的买家而言,这读起来就是诈骗——他关掉标签页,而你永远不知道这笔生意存在过。 -
搁浅的合同。 一个大客户的安全团队在签约前做例行扫描。结果显示你某个子域名上有一张自签名或不受信任的证书。即便其他一切都好,这一面红旗就把一次快速批准变成了一来一回、拖延生意——为的是一个零成本就能修好的问题。
-
慢动作的警告。 你的证书技术上有效,却用 SHA-1 签名——一个浏览器一直在淘汰的旧方法。一次浏览器更新之后,一部分访客开始看到你在自己最新机器上复现不出的警告。客服工单零星地进来,说网站「看着坏了」,你却查不出原因。
-
合规失败。 你收取卡支付。在一次重新审计中,你服务商的检查标记出一把弱密钥、或一张已失效的证书。卡安全规则要求强壮、当代的加密——于是你的线上支付被暂停,直到你重新签发,在最糟糕的时刻冻结了营收。
它到底是什么(四个部分)
一张证书能以四种不同方式不健康,本页全部涵盖。每一项在底层都是一项独立检查,但对你而言它们都是「我的证书没问题吧?」
1. 有效且受信任
这是大头——也是证书健康度里唯一一项关键、最高权重的检查。一张证书只有在以下全部成立时才算「有效且受信任」:
- 它由一家浏览器已经信任的公认证书机构签发(Let’s Encrypt、DigiCert、Sectigo、Google、Amazon 等)。
- 它匹配访客正在使用的确切域名——包括子域名。一张
www.yourbiz.com的证书若不同时覆盖yourbiz.com,就会在光秃秃的域名上报警告。 - 它不是自签名——即不是你颁发给自己的那种,它加密却证明不了你是谁。
- 它当前处于其日期窗口之内——没过期,也没有(虽怪却确实会发生)被设成将来才开始生效。
- 它的信任链完整——签它的那家机构自己也受信任,一路向上。
只要其中任何一项失败,浏览器就显示那个可怕的「您的连接不是私密连接」页面,本项检查就硬性失败。好长这样:一张来自公认机构的证书,覆盖你实际使用的每一个域名和子域名,舒舒服服地处在它的有效期内。
2. 不会马上过期
每张证书都有一个硬性结束日期。免费的通常持续 90 天;付费的常为一年。过了那个日期,信任瞬间蒸发——没有宽限期。本项检查衡量还剩多少天,以及这与谁签发了它如何相互作用:
- 如果它已过期、或将在 7 天内过期,那被视为关键——一个续期已失败的信号。
- 如果它在 30 天内过期且非自动管理,那是一个该立刻续期的警告。
- 如果它来自一家自动续期的服务商(Let’s Encrypt、Cloudflare、Google、Amazon、ZeroSSL 等)且至少还剩一周,它就通过——因为它预期会在死线前自我续期。
- 跑道很长(90 天以上,或自动管理)是干净的通过。
好长这样:一张自动管理、无需任何人触碰就自我续期的证书。永不出现过期宕机的最可靠方式,就是让一台机器、而非一个人,对续期负责。
3. 强签名算法
每张证书都用一个加密算法「签名」,让浏览器能检测篡改。旧算法——MD5 和 SHA-1——已被证明可伪造,意味着攻击者原则上能炮制一张看起来合法地属于你的欺诈证书。本项检查在证书使用强壮、现代的签名时通过:SHA-256 或更强(SHA-384、SHA-512)、现代 ECDSA,或 Ed25519/Ed448。MD5 和 SHA-1 不通过。好长这样:SHA-256 或更好——这是每张免费及现代证书的默认,所以对近年签发的任何证书,这都很少成为问题。
4. 强密钥
证书携带一把做实际打乱工作的加密密钥。如果那把密钥太短,现代计算能力——只要资源足够——就能攻破它,让攻击者冒充你的网站或解密流量。公认的最低标准是 2048 位 RSA 或 256 位椭圆曲线(EC)。本项检查在这些尺寸或以上时通过,以下则不通过。好长这样:2048 位(或 4096 位)RSA,或一把像 P-256 这样的 256 位 EC 密钥——同样是现代免费证书的默认。
关于后三项的说明:有效且受信任是那个驱动警告页的关键项。签名和密钥强度关乎的是面向未来与审计——一张近期的免费证书几乎总会自动通过它们,但它们是安全审查会查的东西,所以值得做对。
如何修复(免费,约 15 分钟)
把这一节交给运营你网站或主机的人——修复免费。 一张有效、强壮、自动续期的证书通过 Let’s Encrypt 或任何现代主机分文不取。我们只对长期监控它是否保持健康收费,而不对修复收费。如果你没有 IT 人员,下面的平台说明能把多数业主带到位。
第 1 步——用一张免费、受信任的证书取得(或替换)证书。 这一步同时修好有效性、签名和密钥强度,因为现代免费证书默认使用 SHA-256 和强密钥。
- Cloudflare: 在 SSL/TLS → Overview 里,把模式设为 Full (Strict)。Cloudflare 为你签发并自动续期一张受信任的边缘证书;确保你的源站也有一张有效证书,「Strict」才能生效。
- Google Workspace / Microsoft 365 托管或任何 cPanel 主机: 找 SSL/TLS Status 并运行 AutoSSL。它自动配置并续期免费证书。
- 建站工具(Squarespace、Wix、Shopify、现代 WordPress 主机): SSL 通常默认开着——确认它在你的域名/安全设置里已启用,并且同时覆盖
yourbiz.com和www.yourbiz.com。 - 你自己的 Linux 服务器(Nginx/Apache): 用 Certbot 安装 Let’s Encrypt——
sudo certbot --nginx -d yourbiz.com -d www.yourbiz.com(或--apache)。要一把现代 EC 密钥,加上--key-type ecdsa。用-d列出你提供服务的每一个主机名,让证书全部匹配。
第 2 步——让续期自动化,从此不再过期。 这是防住周末宕机情景的那一步。
- 在 Let’s Encrypt 服务器上,确认续期定时器已激活并测试它:
sudo certbot renew --dry-run。Certbot 通常会装一个自动定时器;若没有,加一个每日 cron 任务:0 3 * * * certbot renew --quiet。 - 在 Cloudflare、cPanel AutoSSL 和托管/建站工具主机上,续期由它们替你处理——没什么要安排的。
第 3 步——确保它覆盖正确的名称。 最常见的「有效却报警告」原因是名称不匹配。证书必须覆盖客户实际使用的每一个主机名——光秃秃的域名、www,以及像 shop. 或 app. 这样的任何子域名。生成证书时,把每一个都包含进去(像 *.yourbiz.com 这样的通配符一次覆盖所有子域名)。
第 4 步——如果只标记了签名或密钥强度,重新签发即可。 你不需要买任何东西:生成一张全新的证书(第 1 步),新的那张会自动使用 SHA-256 和一把强密钥。在你自己的服务器上,你可以显式钉一把现代密钥——例如 EC 用 openssl ecparam -genkey -name prime256v1 -out server.key,RSA 用 openssl genrsa -out server.key 4096——然后重新签发。
第 5 步——验证,然后回这里重新检测。 用一条快速命令确认日期、签发者和密钥——echo | openssl s_client -servername yourbiz.com -connect yourbiz.com:443 2>/dev/null | openssl x509 -noout -dates -issuer -subject——然后重新运行本项检查。
常见错误
- 把「我们装过一次 SSL」当成完事了。 证书按钟表过期。没有自动续期,问题不是它会不会失效,而是何时——通常在最不方便的时刻。
- 覆盖了
www却不覆盖光秃秃的域名(或反过来)。 两者都必须在证书上,否则其中一个会抛出名称不匹配警告。同样的陷阱也会绊住后来新加的子域名。 - 在一个其实公开的「测试」子域名上留着自签名证书。 它加密,所以感觉安全——但浏览器(和安全扫描器)把它当作不受信任,它是经典的审计红旗。
- 以为付费就更安全。 一张免费的 Let’s Encrypt 证书与一张昂贵的一样受信任、一样加密。多花钱不会造出一把更强的锁。
- 续了证书却忘了重载服务器。 一张躺在磁盘上的新证书在 Web 服务器被重载、把它读进去之前毫无作用——这是「我续了它但还显示过期」的一个意外常见的原因。
- 悄悄失败的自动续期。 一个续期任务可能损坏(文件被移、DNS 变了、端口被封),却继续安静地「成功」。监控到期日——而不只是续期任务——才是真正在它咬人之前抓到它的办法。
常见问题
我不懂技术——这个我自己能搞定吗?
你不需要懂密码学。一张有效证书是免费的(通过 Let's Encrypt 及多数现代主机),在托管主机上通常自动完成。把下面的「如何修复」一节交给运营你网站或主机的人——对绝大多数企业来说,这是个快速、免费的活儿,不是一笔采购。
我的网站显示一把锁——这不就说明证书没问题吗?
那把锁只意味着此刻存在一个安全连接。它不告诉你证书是否即将过期、是否建在一把强密钥上,或它到明天还会不会被浏览器信任。本项检查越过那把锁,看让它保持点亮的四件事:证书是否有效且受信任、是否快过期、是否用强算法签名、密钥是否足够强。
我必须为 SSL 证书付费吗?
不必。来自 Let's Encrypt(以及内置于 Cloudflare、cPanel AutoSSL 和多数现代主机)的免费证书被每个浏览器信任,安全性与付费的一模一样。付费证书主要买的是支持合同、保险,或扩展验证徽章——这些都不影响你的网站是否加密、是否受信任。我们从不对修复收费;我们只对监控它是否保持健康收费。
证书怎么会「过期」——而且为什么会让我的网站宕掉?
每张证书都有一个固定的结束日期(免费的常为 90 天)。过了那个日期,浏览器拒绝信任它,显示一个全页警告而不是你的网站。这不是逐渐衰退——它到死线前完美运行,然后彻底崩坏。这正是自动续期为何如此重要:它移除了那个本会忘事的人。
什么是「自签名」证书,它为什么不通过?
自签名证书是你颁发给自己、而非从一家公认机构取得的证书。它加密连接,却没有任何东西担保它真的是你——所以浏览器把它当作不受信任,向访客发警告,就和对待攻击者的假证书一模一样。对一个公开网站,你永远想要一张来自受信任机构的证书,而那是免费的。
「弱密钥」和「弱签名算法」对我的业务到底意味着什么?
两者都是证书在今天技术上有效、密码学上却脆弱的方式。一把弱密钥(低于 2048 位 RSA 或 256 位 EC)原则上可被破解,让攻击者冒充你的网站。一个弱签名(SHA-1 或 MD5)可被伪造,造出一张以假乱真的证书。现代免费证书默认使用强密钥和强签名,所以修复几乎总是重新签发而已——分文不取。