
没有什么比全屏红色页面上写着"您的连接不是私密的"更快地摧毁网站信誉。这个页面最常见的原因是一件事——SSL证书已过期。好消息是它非常容易防止:只需知道证书还剩多少天,并定期提前检查。
SSL证书过期时会发生什么
当SSL证书过期时,每个浏览器(Chrome、Safari、Firefox、Edge)都会在访客到达网站之前将其停留在警告页面。用户必须自己承担风险才能进入——而大多数人只是关闭标签页然后去别处。
- 证书过期当天流量立即下降
- 在被阻止期间,在线商店无法销售
- Google将网站视为存在安全问题,可能会影响排名
- 任何通过HTTPS调用网站的API或应用都会完全出错
为什么SSL证书的有效期比您想象的要短
根据行业标准,SSL证书的有效期越来越短。如今付费证书最多只能签发大约1年,而免费的最流行的Let's Encrypt仅持续90天。这意味着没有自动续期系统的话,您必须每3个月记住一次续期日期。
| SSL类型 | 证书有效期 | 支持自动续期? |
|---|---|---|
| Let's Encrypt(免费) | 90天 | 是 —— 如果设置了Certbot / DirectAdmin |
| DV SSL(付费) | 最多约1年 | 取决于提供商 |
| OV / EV SSL | 最多约1年 | 手动续期+身份验证 |
如何检查SSL证书过期日期
方法1 —— 在线工具(最简单)
只需在检查器中输入域名,它就会显示过期日期、颁发者和剩余天数。像 dnsxray.com 这样的域名健康检查工具有一个SSL部分,在单次查找中显示证书状态以及DNS、电子邮件和WHOIS——一次检查显示所有内容,无需打开多个网站。
方法2 —— 从浏览器查看
打开网站,单击URL旁边的锁定图标→查看证书详细信息。您会看到"有效期至"字段直接显示日期——适合快速单站点检查。
方法3 —— openssl命令
对于想要从终端检查的系统管理员:
echo | openssl s_client -servername example.com \
-connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates
输出显示 notBefore 和 notAfter —— notAfter 行是过期日期。
检查前理解证书链
安装在您的网络服务器上的SSL证书不会直接与浏览器验证——它依赖于由三层组成的信任链:根CA、中间CA和您自己的最终实体证书。理解这个结构可以告诉您除了过期日期之外还需要检查什么。
| 层级 | 示例 | 典型有效期 | 过期时的影响 |
|---|---|---|---|
| 根CA | DigiCert Global Root G2 | 20–30年 | 所有浏览器不信任网站 |
| 中间CA | RapidSSL TLS RSA CA G1 | 5–10年 | 链断裂 —— 某些设备错误 |
| 最终实体(您的) | example.com | 90天–1年 | 网站被阻止 |
根CA和中间CA通常持续时间足够长,不会成为问题,但如果中间证书丢失或安装不正确,即使您的主要证书尚未过期,浏览器也会显示"证书链不完整"错误。像 dnsxray.com 这样的工具会自动报告链的完整性以及过期日期。
使用curl和Python自动监控SSL
如果您管理多个网站并需要每日SSL监控而无需为每个网站打开浏览器,您可以编写脚本来检查并将其安排为cron作业。
方法4 —— 使用curl检查(适合cron)
# 使用完整证书信息检查过期日期
curl -v --head https://example.com 2>&1 | grep "expire date"
# 简短形式 —— 仅过期日期
curl -v --silent --head https://example.com 2>&1 \
| grep "expire date"
方法5 —— 多个域的Python脚本
import ssl, socket
from datetime import datetime
def check_ssl(hostname, port=443):
ctx = ssl.create_default_context()
with ctx.wrap_socket(socket.socket(), server_hostname=hostname) as s:
s.settimeout(5)
s.connect((hostname, port))
cert = s.getpeercert()
expires = datetime.strptime(cert['notAfter'], '%b %d %H:%M:%S %Y %Z')
days_left = (expires - datetime.utcnow()).days
return days_left, expires.strftime('%Y-%m-%d')
for domain in ['example.com', 'another-site.com']:
days, date = check_ssl(domain)
status = 'OK' if days > 30 else ('WARNING' if days > 0 else 'EXPIRED')
print(f'{domain}: {status} — expires {date} ({days} days)')
此脚本可以通过cron运行,例如每天,当任何域剩余天数少于30天时发送电子邮件警告。
DV、OV和EV SSL —— 差异以及如何检查每种
在审计SSL时,您还应该知道网站使用的证书级别,因为每种类型都有不同的验证过程和续期时间表。
| 类型 | 验证内容 | 颁发时间 | 最适合 |
|---|---|---|---|
| DV(域验证) | 仅限域所有权 | 几分钟 | 博客、初创公司、普通网站 |
| OV(组织验证) | 域+组织身份 | 1–3个工作日 | 商业网站、组织 |
| EV(扩展验证) | 完整组织验证(公司注册) | 3–7个工作日 | 银行、大型电子商务网站 |
DV续期很快很容易。OV和EV每次都需要新的身份证明文件,所以在过期前至少1-2周开始续期过程——而不是只提前30天。
通配符SSL和多域SAN —— 需要查看的内容
具有多个子域或多个域名的网站通常使用两种特殊证书类型之一。您需要验证所有涵盖的名称仍然有效且正确列出。
- 通配符SSL(
*.example.com) —— 一个证书覆盖每个子域,如www.example.com、shop.example.com和mail.example.com。它不覆盖裸域example.com或子子域如a.b.example.com。 - 多域SAN(主体替代名称) —— 单个证书明确列出多个单独的域名,例如
example.com、example.net和mybrand.co.th。
检查证书详细信息时,始终检查 Subject Alternative Name 字段以确认所有正在使用的域和子域都被涵盖。如果您运行HTTP和HTTPS版本,请测试HTTP正确重定向到所有域上的HTTPS。
检查不仅仅是"过期日期"
未过期的SSL并不意味着没有问题。您还应该检查这三点。
- 为正确的域颁发 —— 证书必须覆盖实际使用的名称(例如
example.com和www.example.com) - 完整的证书链 —— 如果中间证书丢失,某些设备会将SSL视为不可信
- 仍然使用安全算法 —— 很旧的证书可能使用较新的浏览器不再接受的标准
30天规则:目标是每个月至少检查一次每个网站的SSL,并在有30天或更多天时采取续期行动。不要等到只剩几天——某些续期(尤其是OV/EV)需要几天进行身份验证。
将SSL设置为自动续期
最好的方法是根本不必记住任何事情——使用自动续期。
- Let's Encrypt:设置Certbot通过cron运行,或在DirectAdmin中启用自动续期功能
- 好的托管:通常会自动颁发和续期Let's Encrypt,无需客户采取任何行动
- 付费SSL:设置提前45天的日历提醒,因为大多数不能自动续期
即使设置了自动续期,您仍应定期检查,因为自动续期可能会无声地失败(例如DNS更改或端口80被阻止)。
养成检查的习惯:打开 dnsxray.com 每月检查一次您的域,查看SSL部分了解剩余天数,如果即将过期则提前续期——如果您管理多个网站,请使用多域检查功能。
常见问题
问:使用免费的Let's Encrypt,我必须每90天自己续期一次吗?
不,如果设置了自动续期——大多数DirectAdmin托管会自动为您续期。您只需定期检查它是否真的在工作。
问:SSL过期时网站会完全消失吗?
网站仍然存在,但访客首先会点击警告页面。许多人不会点击——所以您会丧失真实流量,直到续期为止。
问:我检查了,还剩10天——应该怎么办?
如果您使用Let's Encrypt,立即触发续期(通常在几分钟内完成)。如果是付费SSL,请立即与提供商联系,因为身份验证可能需要时间。
问:AsiaGB为我管理SSL吗?
是的——AsiaGB托管为您签发免费SSL并设置自动续期。对于想要付费SSL(DV/OV/EV)的客户,团队会帮助安装它并在过期前提醒您。
总结:过期的SSL是网站被阻止的主要原因之一。通过每月检查一次过期日期、在剩余30天或以上时续期以及设置自动续期来防止它——但仍要定期重新检查,因为自动续期可能会无声地失败。
每个计划上都包括免费SSL和自动续期
AsiaGB托管为每个网站提供免费SSL并设置自动续期——不再有过期证书。SSD托管起价500泰铢/年,99% 正常运行时间,DirectAdmin。
查看SSL服务