
当 SSL 证书出现问题时,浏览器会显示全屏红色警告页面 — 大多数访客会立即离开而不进入网站。SSL 问题因此直接影响您的信誉和流量。好消息是,每种错误类型都有明确的原因。本指南逐个介绍最常见的 SSL 问题,并提供修复方法和诊断工具。
ERR_SSL_PROTOCOL_ERROR
原因:浏览器无法与服务器完成 SSL 握手。
修复:
- 验证 SSL 证书是否正确安装在 DirectAdmin 中
- 清除浏览器缓存和 SSL 状态(Chrome:设置 → 隐私 → 清除浏览数据)
- 确保服务器支持 TLS 1.2 或 TLS 1.3
- 如果使用 Cloudflare,检查 SSL 模式是否设置为"完全"或"完全(严格)"
NET::ERR_CERT_DATE_INVALID(证书过期)
原因:SSL 证书已过期。
修复:
- 通过 AsiaGB 计费系统更新 SSL 证书
- 对于 Let's Encrypt:通过 DirectAdmin → SSL 证书 → Let's Encrypt 更新
- 启用自动续期以防止再次发生
NET::ERR_CERT_COMMON_NAME_INVALID
原因:证书与所访问的域名不匹配。
修复:
- 确认证书是否为正确的域名颁发
- 如果使用 www,确保证书涵盖 yourdomain.com 和 www.yourdomain.com
- 注意:通配符证书覆盖 *.yourdomain.com 但不覆盖根域 yourdomain.com
SSL_ERROR_RX_RECORD_TOO_LONG
原因:服务器在端口 443 上发送 HTTP 响应而不是 HTTPS 响应。通常是 Apache 配置错误。
修复:检查您的 Apache Virtual Host 配置,确认 SSL 模块已启用且 VirtualHost 使用 SSL 指令在端口 443 上监听。
证书链不完整
SSL 可能在 Chrome 中工作,但在 Firefox 或移动设备上失败 — 这通常意味着缺少中间证书。
访问 ssllabs.com/ssltest 查看完整的证书链并识别缺失的中间证书。使用完整的证书链捆绑重新安装证书。
SSL 诊断工具
- SSL 实验室测试:ssllabs.com/ssltest — 评估您的证书链、协议支持和配置
- 为什么没有挂锁:whynopadlock.com — 检测混合内容问题
- DNS 检查器:dnschecker.org — 全球验证 DNS 传播
提示:遇到 SSL 错误时,首先在隐私/隐身窗口中打开网站。某些 SSL 错误是由浏览器中缓存的证书引起的,根本不是服务器端问题。
常见 SSL 证书错误一览
在深入研究每种情况之前,下表总结了浏览器显示的最常见 SSL 错误消息,以及它们的真实原因和简洁的修复方法。当您看到红色警告页面时,记下显示的准确错误文本(例如以 NET::ERR_CERT_ 开头的代码),然后首先在此表中查找。这样您可以快速确定正确的方向,而不是逐个尝试随机修复:
| 错误消息 | 原因 | 修复 |
|---|---|---|
NET::ERR_CERT_DATE_INVALID |
证书过期,或访客的设备时钟设置不正确 | 更新证书并启用自动续期;如果仅一台设备受到影响,修复该设备的日期/时间 |
NET::ERR_CERT_COMMON_NAME_INVALID |
证书中的域名与打开的域名不匹配(名称不匹配) | 颁发涵盖根域和 www 的证书;验证 SAN 与实时域名匹配 |
NET::ERR_CERT_AUTHORITY_INVALID |
证书链不完整(缺少中间证书)或自签名证书 | 使用完整的 CA 捆绑重新安装;对于内部测试,使用来自真实 CA 的证书 |
ERR_SSL_PROTOCOL_ERROR |
握手失败,例如 TLS 版本不匹配或 Cloudflare SSL 模式错误 | 在服务器上启用 TLS 1.2/1.3;将 Cloudflare SSL 设置为完全(严格) |
SSL_ERROR_RX_RECORD_TOO_LONG |
服务器在端口 443 上发送 HTTP 而不是 HTTPS | 检查 Virtual Host:启用 SSL 模块并在端口 443 上使用完整 SSL 指令监听 |
| 证书链不完整(仅在某些浏览器中警告) | 缺少中间证书;某些浏览器无法自行构建证书链 | 安装完整的 CA 捆绑;在 SSL 实验室重新验证链是否完整 |
| 混合内容(无挂锁/叉形挂锁) | HTTPS 页面加载资源(图像、JS、CSS)通过 HTTP | 将所有资源切换到 HTTPS 或相对 URL;使用 whynopadlock.com 检测 |
如果遇到此表中没有的错误,复制全文搜索,因为每个浏览器对同一根本原因的错误命名不同。例如,Firefox 在同一情况下使用 SEC_ERROR_UNKNOWN_ISSUER,而 Chrome 显示 NET::ERR_CERT_AUTHORITY_INVALID — 两者都表示证书链不完整。
使用工具检查 SSL(openssl s_client、SSL 实验室、浏览器)
准确的 SSL 诊断从实际"看到"服务器发送的内容开始,而不是仅从错误文本推测。下面三组工具涵盖几乎所有情况,从命令行到可视化报告:
1. openssl s_client — 从您的计算机直接检查
openssl s_client 命令连接到服务器并打印它接收的完整链。这是检查中间证书是否存在的理想工具,无需依赖任何外部网站:
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
查看 Certificate chain 部分。如果它仅显示您的域名叶证书(深度 0),但没有中间证书(深度 1),则证书链不完整。还要查看 Verify return code 行 — 0 (ok) 表示良好。要检查过期日期,请使用:
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates
2. SSL 实验室 — 可视化评级报告
打开 ssllabs.com/ssltest 并输入您的域名。它会分配从 A 到 F 的评级,并清楚地说明证书链是否完整、支持哪些 TLS 版本以及是否存在任何已知漏洞。这是修复后确认结果的理想选择,也是与客户或团队分享的证据。
3. 浏览器开发者工具
按 F12 打开开发者工具,进入"安全"标签页(Chrome)查看证书状态和不安全资源列表。"控制台"标签页会报告每个混合内容项及其 HTTP URL,以便您精确修复。
修复不完整的证书链(中间证书/CA 捆绑)
不完整的证书链是"网站在 Chrome 中工作但在移动设备或 Firefox 上失败"的主要原因之一,因为某些桌面浏览器支持 AIA 获取以自动获取中间证书,而移动设备和大多数服务器端 API 库不支持 — 因此它们将证书视为不受信任。正确的修复方法是让服务器首先发送完整的证书链。
完整的证书链必须按顺序排列:从域名的叶证书开始,然后是 CA 的中间证书;您不需要包含根证书(它已存在于用户的信任存储中)。修复步骤:
- 从您的证书签发者获取中间证书/CA 捆绑文件(RapidSSL、GeoTrust、DigiCert 通常随证书提供)
- 在 DirectAdmin 中,进入 SSL 证书,将完整的 CA 捆绑粘贴到 CA 根证书字段中
- 在 Apache 文件级别,将
SSLCertificateChainFile设置为捆绑文件,或将中间证书附加到.crt文件中的证书之后 - 重新启动网络服务器,然后使用
openssl s_client或 SSL 实验室确认所有层都出现
对于 Let's Encrypt,发行工具(例如 certbot)会创建一个 fullchain.pem,已经结合了叶证书和中间证书。始终将您的网络服务器指向 fullchain.pem 而不是 cert.pem 以避免证书链损坏。
www/非 www 和子域的 SSL 问题
许多网站仅为 yourdomain.com 颁发证书,但忘记了某些访客输入 www.yourdomain.com,导致仅在 www 版本(或反之)上出现名称不匹配。大多数领先提供商的 DV 证书会自动包含两个名称(根域和 www),但您应该在 SAN(使用者备用名称)字段中确认两者都存在。
shop.yourdomain.com 或 mail.yourdomain.com 等其他子域 不会自动被根证书覆盖。您的选项:
- 通配符证书(
*.yourdomain.com)覆盖所有单级子域,但不覆盖根域yourdomain.com,也不覆盖嵌套子域(如a.b.yourdomain.com) - 多域(SAN)证书列出您想要的确切域和子域 — 当您有一个已知的小型子域集合时非常理想
- 为每个子域颁发单独的证书 — 可行,但在规模上难以管理
在重定向级别,以一致的方向指向 www ↔ 非 www(选择一个作为规范),并通过 .htaccess 强制 HTTPS,以便访客不会在证书不覆盖的版本上受阻。
常见问题解答
SSL 在桌面上工作,但在手机上失败 — 为什么?
通常是缺少中间证书。某些浏览器会自动填充证书链,而其他浏览器不会 — 使用完整的证书链捆绑重新安装证书。
我修复了服务器,但仍然看到相同的错误
在隐身窗口中打开网站 — 某些错误来自您设备上缓存的旧证书,而不是服务器端问题。
我应该使用哪些工具检查 SSL?
ssllabs.com/ssltest 最详细地检查证书链和协议,而 whynopadlock.com 有助于查找混合内容,openssl s_client 命令从您的计算机直接检查证书链,无需任何外部网站。
通配符证书也覆盖根域吗?
否 — 通配符 *.yourdomain.com 仅覆盖单级子域,不覆盖主域 yourdomain.com。大多数签发者会为您将根域添加到 SAN 中,但在上线前请确认。