如果我使用 Chrome 访问 BT 的网站,我会看到这个...https://i.stack.imgur.com/MhcOU.jpg证书似乎已过期。(Firefox 中类似)
BT 声称事实并非如此。https://twitter.com/BTCare/status/440405157999030272
确实这个页面http://www.digicert.com/help/显示“www.bt.com”的到期日期为“2014 年 9 月 24 日(从今天起 205 天)”
我昨天看到的其中一台设备现在没有显示错误。但我的一些设备仍然显示错误。我的一个朋友没有问题。基本上有些设备可以工作,有些则不行。
这是怎么回事?
注意,我不是 BT 的员工,我只是使用他们的一项服务。由于我在自己的服务器上使用 SSL 证书,所以我很想知道发生了什么。
旧证书是否缓存在某处?缓存在哪里?BT 的服务器级别(可能是负载平衡器等)、ISP、DNS、设备?
提前致谢!
答案1
我之前就见过这种情况,应用程序或浏览器无法建立 SSL 连接,并出现“证书已过期”警告,即使相关 SSL 证书仍在有效期内 - 实际失败的测试程序不是最终证书的有效性测试,而是整个信任链的有效性测试 - 这有时被称为“对等验证”程序。
这可能是因为您信任某个中级证书的旧版本 - 在这种情况下,不是 SSL 证书过期,而是您的客户端为测试证书有效性而构建的链中的某个证书:
(3) --- Verisign Root CA
(2) --> Verisign top Intermediate CA
(1) --> Verisign Issuing CA
(0) --> SSL Certificate
如果您的计算机在其受信任的 CA 证书存储中只有 Verisign Root CA 证书 (3),它将依赖于 www.bt.com:443 的 Web 服务器发送的中间证书链
如果中间证书(链中的证书 (2) 和/或 (1))已被新证书重新颁发/替换,但您在中间信任库中存储了这些证书的先前版本,则客户端可能会尝试使用其中一个证书构建上述链,如果这些证书已过期,则会失败
您可以检查 Chrome 信任的证书:
- 前往
chrome://settings/
(或点击右上角的自定义按钮并选择设置) - 在底部,点击“显示高级设置”
- 在 HTTPS/SSL 下,点击“管理证书”
- 检查不同存储的内容(信任存储的名称和数量将根据底层操作系统而有所不同)
从这里,您应该能够导入新的证书并删除旧的证书。
要查看 Web 服务器在链中提供的实际证书,请使用 openssl:
openssl s_client -connect www.bt.com:443 -showcerts