我们在相应的操作系统中添加了两个 CA 证书 - 1 个根 CA 和 1 个关联的中间 CA信任库(/etc/ssl/certs在我们的 SuSE 11 上),因为它们不是由操作系统的信任存储提供的(并且可能永远不会提供,因为它们不在存储库中)。
最近,这两个证书在自动更新后消失了,明显的后果是客户端无法再通过 tls 连接。
事后看来,我们不确定是否对这些条目进行了常规的重新整理,即
# c_rehash /etc/ssl/certs
如果我们没有重新进行检查:这是否是更新期间删除相应证书的原因?
或者,如果手动将证书添加到信任库中,是否总是存在丢失证书的风险(在相关系统上有两个 SSL 库:openssl 和 mozilla-nss)?
答案1
您无需将下属 CA 添加到信任锚存储中。您仅显式信任根 CA(信任锚),并隐式信任由该根 CA 或该根 CA 的任何下属 CA 签名的所有证书。
如果您无法在终端实体和信任锚之间建立链条,则请检查终端实体是否出示了其自身和信任锚之间的所有证书。请参阅RFC 5256 第 7.4.2 节,特别是certificate_list
;其中规定所有证书(可选带有根证书)都必须在 TLS 握手中出示。
另外,如果在 AIA 扩展中指定了证书的 URL,Microsoft 客户端可以下载缺失的从属 CA 证书。Mozilla Firefox 等其他浏览器不会使用该扩展,理由是用户隐私。
请注意,如果您明确信任下属 CA,则无法保证您的客户端会检查其证书是否被撤销。如果将来下属 CA 受到攻击并被根 CA 撤销,您的客户端可能会继续信任它。这将是特定于实现的。