调试 CA 证书问题 - DigiCert GlobalRoot CA

调试 CA 证书问题 - DigiCert GlobalRoot CA

我的 Linux 机器检查证书链的方式出了问题,我无法调试它

我已经测试了两台目前受到影响的主机

  • repo.fortinet.com(apt/deb 的 debian/ubuntu 存储库)ssllabs 报告
  • code.gov.cz(我们的本地政府 gitlab 实例)ssllabs 报告

根据 SSLLabs 的说法,两者都存在同样的问题(服务器的证书链不完整,等级上限为“B”)。

我已经验证 DigiCert GlobalRoot CA 已正确安装在我的设备中(使用和/etc/ssl/certs手动配置)。我还验证了本地序列号/指纹与远程匹配dpkg-reconfigure ca-certificatesupdate-ca-certificates --fresh

但是我无法从apt/连接到这些主机git,在两种情况下都遇到相同的症状(证书验证失败:证书不受信任。证书颁发者未知。无法握手:证书验证错误。)。APT 显然不会下载 repo 文件,git 将无法下载存储库。

我尝试使用 OpenSSL 找到根源,openssl s_client -connect但在两种情况下,OpenSSL 都报告了问题 21 (验证返回代码:21(无法验证第一个证书)),完整命令运行如下

我也尝试获取缺失的中间体,但是这并不能解决问题。

问题出在我这边吗(我怀疑是的)或者是这两台服务器都配置错误,而我只是在我的发行版(Debian Buster/Bullseye)中采取了安全预防措施?

答案1

如果 Qualys SSL 服务器测试的消息是证书链不完整,则这些系统配置错误。发送证书链时,必须发送除根 CA 之外的每个证书。无需发送根 CA 本身,因为客户端已经拥有它,因此虽然允许发送,但这样做只会浪费带宽。

这些服务器仅发送了终端服务器证书。虽然可以使用证书中的 AIA 信息提取正确的证书链,但 TLS 库不会这样做(因为这涉及发出额外的网络请求)。某些 Web 浏览器恰好可以正常工作,因为它们实现了证书缓存,但这也不能保证在那里也能正常工作。您的系统在此处具有正常且正确的行为。

您应该通知这些系统的管理员他们的配置错误并要求他们解决问题。

相关内容