当前位置:首页 > 云服务器 > 正文

SSL证书过期怎么办?SSL证书过期了怎么续期

HTTPS SSL证书过期:影响、排查与解决方案详解

SSL/TLS 证书是保障网站数据传输安全的核心组件,当证书过期时,浏览器会向用户发出安全警告,这不仅影响用户体验,更严重损害网站的可信度,以下将详细解析证书过期的后果、常见错误代码、排查步骤以及解决方案。

SSL证书过期的主要影响

当SSL证书过期后,服务器无法通过标准的HTTPS握手验证身份,导致以下连锁反应:

  1. 浏览器安全警告:用户访问网站时,浏览器(如Chrome、Firefox、Safari)会显示“您的连接不是私密连接”或“NET::ERR_CERT_DATE_EXPIRED”等红色警告页面。
  2. 用户流失与信任危机:大多数用户看到安全警告后会立即离开网站,导致转化率大幅下降。
  3. SEO排名下降:搜索引擎(如Google)将HTTPS作为排名因素之一,且会标记不安全网站,导致自然流量减少。
  4. 功能失效:现代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证书过期了怎么续期 第1张

使用在线工具检测

最快捷的方法是使用第三方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

如果当前时间晚于该时间,则证书已过期。

SSL证书过期怎么办?SSL证书过期了怎么续期 第2张

检查证书链

有时主证书未过期,但中间证书(Intermediate Certificate)过期也会导致报错,确保服务器配置中包含了完整的证书链(主证书 + 中间证书)。

解决方案:如何更换或续期SSL证书

根据证书类型和服务器环境,采取不同的更新策略。

方案A:使用Let’s Encrypt免费证书(推荐)

Let’s Encrypt 提供自动续期的免费SSL证书,适合大多数个人网站和中小企业。

  1. 安装 Certbot: sudo apt-get install certbot python3-certbot-nginx # Nginx示例 # 或 sudo apt-get install certbot python3-certbot-apache # Apache示例
  2. 自动获取和配置证书: sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  3. 设置自动续期

    Certbot 通常会自动设置 cron job 或 systemd timer 来每90天自动续期,你可以手动测试续期命令:

    SSL证书过期怎么办?SSL证书过期了怎么续期 第3张

    sudo certbot renew --dry-run

方案B:商业证书手动更新

如果你购买的是DigiCert、GlobalSign等商业证书:

  1. 生成新的CSR(证书签名请求)

    在服务器上生成新的私钥和CSR文件。

  2. 提交CSR给CA机构

    登录证书购买平台,提交新的CSR进行验证和签发。

  3. 下载新证书

    下载签发好的 .crt 文件和中间证书文件。

  4. 更新服务器配置
    • Nginx: 修改 nginx.conf 中的 ssl_certificate 和 ssl_certificate_key 路径,指向新证书。
    • Apache: 修改 httpd-ssl.conf 或虚拟主机配置中的 SSLCertificateFile 和 SSLCertificateKeyFile。
  5. 重启服务: sudo nginx -t # 测试配置 sudo systemctl restart nginx

方案C:云服务商托管证书

如果使用阿里云、西西安全、AWS、Cloudflare等云服务:

  1. 控制台操作:登录云控制台,找到“SSL证书”或“负载均衡”模块。
  2. 上传或购买:上传新证书或购买新证书。
  3. 绑定域名:将新证书绑定到对应的域名或负载均衡器。
  4. 生效时间:通常几分钟内即可生效,无需重启服务器。

预防证书过期的最佳实践

  1. 启用自动续期:对于Let’s Encrypt等短期证书,务必配置自动续期脚本。
  2. 设置监控告警:使用UptimeRobot、Pingdom或自建脚本,在证书到期前30天、15天、7天发送电子邮件或短信告警。
  3. 定期审计:每季度检查一次所有域名的SSL证书状态,特别是那些不常访问的内部系统或测试环境。
  4. 使用HSTS:配置HTTP严格传输安全(HSTS),确保用户始终通过HTTPS访问,但需注意在证书更换期间谨慎操作,避免锁定用户。


相关问题与解答

Q1: 证书过期后,用户之前缓存的证书会导致问题吗?

A: 不会,SSL/TLS握手是在每次连接(或每次会话)时重新进行的,浏览器不会长期缓存服务器的SSL证书本身(尽管会缓存HSTS策略和OCSP响应),当证书过期时,下一次用户访问网站时,浏览器会重新从服务器获取证书,并立即检测到过期状态,从而显示安全警告,无需担心旧证书缓存导致的问题,但需要尽快更新服务器上的证书以恢复正常访问。

Q2: 为什么我的证书显示“未受信任”,即使它还没过期?

A: “未受信任”通常不是由过期引起的,而是由以下原因导致:

  1. 证书链不完整:服务器未正确配置中间证书(Intermediate CA),导致浏览器无法构建完整的信任链。
  2. 域名不匹配:证书颁发的域名与用户访问的域名不一致(证书是 www.example.com,但用户访问 example.com,且未包含SAN扩展)。
  3. 自签名证书:使用了非公共CA机构签发的自签名证书,浏览器默认不信任。
  4. 系统时间错误:用户设备的系统时间设置错误,导致认为当前时间在证书有效期之前或之后。

    建议首先检查服务器配置的证书链是否完整,并确保域名匹配。

0