SSL证书过期怎么办?SSL证书过期了怎么续期
- 云服务器
- 2026-07-07
- 9
HTTPS SSL证书过期:影响、排查与解决方案详解
SSL/TLS 证书是保障网站数据传输安全的核心组件,当证书过期时,浏览器会向用户发出安全警告,这不仅影响用户体验,更严重损害网站的可信度,以下将详细解析证书过期的后果、常见错误代码、排查步骤以及解决方案。
SSL证书过期的主要影响
当SSL证书过期后,服务器无法通过标准的HTTPS握手验证身份,导致以下连锁反应:
- 浏览器安全警告:用户访问网站时,浏览器(如Chrome、Firefox、Safari)会显示“您的连接不是私密连接”或“NET::ERR_CERT_DATE_EXPIRED”等红色警告页面。
- 用户流失与信任危机:大多数用户看到安全警告后会立即离开网站,导致转化率大幅下降。
- SEO排名下降:搜索引擎(如Google)将HTTPS作为排名因素之一,且会标记不安全网站,导致自然流量减少。
- 功能失效:现代Web API(如Service Workers、Geolocation、Payment Request)在非安全上下文中可能无法正常工作。
常见错误代码对照表
不同浏览器和客户端在证书过期时可能显示不同的错误代码,以下是常见情况的汇总:
| 浏览器/客户端 | 常见错误提示/代码 | 含义说明 |
|---|---|---|
| Chrome / Edge | NET::ERR_CERT_DATE_EXPIRED | 证书已过期或尚未生效。 |
| Firefox | SEC_ERROR_EXPIRED_CERTIFICATE | 证书有效期已过。 |
| Safari (macOS/iOS) | “This Connection Is Not Private” | 证书已过期,点击“显示详细信息”可继续访问(不推荐)。 |
| Android Chrome | “Your connection is not private” | 证书链不完整或证书过期。 |
| API/后端调用 | SSLHandshakeException | Java等后端服务在调用HTTPS接口时,因证书过期导致握手失败。 |
如何排查证书是否过期
在采取行动之前,首先需要确认证书是否真的过期,以及是哪个阶段的证书出了问题。

使用在线工具检测
最快捷的方法是使用第三方SSL检测工具,如:
- SSL Labs (Qualys): 提供详细的SSL配置分析和过期时间提醒。
- DigiCert SSL Checker: 快速查看证书有效期、颁发机构和链完整性。
命令行检测 (Linux/Mac)
使用 openssl 命令可以查看证书的详细信息,包括过期时间:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
在输出信息中查找 Not After 字段,
Not After : Jun 15 12:00:00 2023 GMT
如果当前时间晚于该时间,则证书已过期。

检查证书链
有时主证书未过期,但中间证书(Intermediate Certificate)过期也会导致报错,确保服务器配置中包含了完整的证书链(主证书 + 中间证书)。
解决方案:如何更换或续期SSL证书
根据证书类型和服务器环境,采取不同的更新策略。
方案A:使用Let’s Encrypt免费证书(推荐)
Let’s Encrypt 提供自动续期的免费SSL证书,适合大多数个人网站和中小企业。
- 安装 Certbot: sudo apt-get install certbot python3-certbot-nginx # Nginx示例 # 或 sudo apt-get install certbot python3-certbot-apache # Apache示例
- 自动获取和配置证书: sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
- 设置自动续期:
Certbot 通常会自动设置 cron job 或 systemd timer 来每90天自动续期,你可以手动测试续期命令:
sudo certbot renew --dry-run
方案B:商业证书手动更新
如果你购买的是DigiCert、GlobalSign等商业证书:
- 生成新的CSR(证书签名请求):
在服务器上生成新的私钥和CSR文件。
- 提交CSR给CA机构:
登录证书购买平台,提交新的CSR进行验证和签发。
- 下载新证书:
下载签发好的 .crt 文件和中间证书文件。
- 更新服务器配置:
- Nginx: 修改 nginx.conf 中的 ssl_certificate 和 ssl_certificate_key 路径,指向新证书。
- Apache: 修改 httpd-ssl.conf 或虚拟主机配置中的 SSLCertificateFile 和 SSLCertificateKeyFile。
- 重启服务: sudo nginx -t # 测试配置 sudo systemctl restart nginx
方案C:云服务商托管证书
如果使用阿里云、西西安全、AWS、Cloudflare等云服务:
- 控制台操作:登录云控制台,找到“SSL证书”或“负载均衡”模块。
- 上传或购买:上传新证书或购买新证书。
- 绑定域名:将新证书绑定到对应的域名或负载均衡器。
- 生效时间:通常几分钟内即可生效,无需重启服务器。
预防证书过期的最佳实践
- 启用自动续期:对于Let’s Encrypt等短期证书,务必配置自动续期脚本。
- 设置监控告警:使用UptimeRobot、Pingdom或自建脚本,在证书到期前30天、15天、7天发送电子邮件或短信告警。
- 定期审计:每季度检查一次所有域名的SSL证书状态,特别是那些不常访问的内部系统或测试环境。
- 使用HSTS:配置HTTP严格传输安全(HSTS),确保用户始终通过HTTPS访问,但需注意在证书更换期间谨慎操作,避免锁定用户。
相关问题与解答
Q1: 证书过期后,用户之前缓存的证书会导致问题吗?
A: 不会,SSL/TLS握手是在每次连接(或每次会话)时重新进行的,浏览器不会长期缓存服务器的SSL证书本身(尽管会缓存HSTS策略和OCSP响应),当证书过期时,下一次用户访问网站时,浏览器会重新从服务器获取证书,并立即检测到过期状态,从而显示安全警告,无需担心旧证书缓存导致的问题,但需要尽快更新服务器上的证书以恢复正常访问。
Q2: 为什么我的证书显示“未受信任”,即使它还没过期?
A: “未受信任”通常不是由过期引起的,而是由以下原因导致:
- 证书链不完整:服务器未正确配置中间证书(Intermediate CA),导致浏览器无法构建完整的信任链。
- 域名不匹配:证书颁发的域名与用户访问的域名不一致(证书是 www.example.com,但用户访问 example.com,且未包含SAN扩展)。
- 自签名证书:使用了非公共CA机构签发的自签名证书,浏览器默认不信任。
- 系统时间错误:用户设备的系统时间设置错误,导致认为当前时间在证书有效期之前或之后。
建议首先检查服务器配置的证书链是否完整,并确保域名匹配。