导入根存储的非自签名证书是否需要(自签名)颁发者也导入根存储?
Does a non-self-signed certificate, imported into root store, require a (self-signed) issuer to also be imported into the root store?
Does a non-self-signed certificate, imported into root store, require a (self-signed) issuer to also be imported into the root store?
假设我有一个由另一个证书 B
签名的证书 A
。那么仅将 A
导入根存储就足够了吗,即证书验证在 A
处停止,还是应该将 B
也导入根存储以进行适当的证书验证?
我问这个问题的原因是,我在不同的产品(例如网络浏览器或系统)上遇到了不同的结果,所以我想知道正确的方法。
您应该在信任库中包含证书 B。如评论中所述,您的里程可能因客户端和服务器而异,以不同方式实现 RFC。
就规则而言,x.509 证书的规范在 IETF RFC 5280 中。关键信息是,要使 SSL 握手发生,客户端应该进行完整的证书链验证,最终得到一个位于您的信任库中的自签名证书。
您的证书不是自签名的,它是由不同的 CA(证书 B)颁发的。如果您的信任库中没有 B,则信任链已断开。但是,再次如上所述,客户端可能不会验证完整的证书链。
这样想。您的客户会收到由“B”签名的证书 A。客户应验证 A 上的签名是否正确,这意味着它需要“B”的(证书)。如果 B 是“根”CA 或自签名,则其“颁发者”和“主题”字段将匹配。如果证书 B 在您的 TrustStore 中,那么您就是黄金。
服务器的工作是向您发送 certificate list for TLS。
This is a sequence (chain) of certificates. The sender's
certificate MUST come first in the list. Each following
certificate MUST directly certify the one preceding it.
有证书链验证的可视化表示here。希望对你有帮助。
Does a non-self-signed certificate, imported into root store, require a (self-signed) issuer to also be imported into the root store?
假设我有一个由另一个证书 B
签名的证书 A
。那么仅将 A
导入根存储就足够了吗,即证书验证在 A
处停止,还是应该将 B
也导入根存储以进行适当的证书验证?
我问这个问题的原因是,我在不同的产品(例如网络浏览器或系统)上遇到了不同的结果,所以我想知道正确的方法。
您应该在信任库中包含证书 B。如评论中所述,您的里程可能因客户端和服务器而异,以不同方式实现 RFC。
就规则而言,x.509 证书的规范在 IETF RFC 5280 中。关键信息是,要使 SSL 握手发生,客户端应该进行完整的证书链验证,最终得到一个位于您的信任库中的自签名证书。
您的证书不是自签名的,它是由不同的 CA(证书 B)颁发的。如果您的信任库中没有 B,则信任链已断开。但是,再次如上所述,客户端可能不会验证完整的证书链。
这样想。您的客户会收到由“B”签名的证书 A。客户应验证 A 上的签名是否正确,这意味着它需要“B”的(证书)。如果 B 是“根”CA 或自签名,则其“颁发者”和“主题”字段将匹配。如果证书 B 在您的 TrustStore 中,那么您就是黄金。
服务器的工作是向您发送 certificate list for TLS。
This is a sequence (chain) of certificates. The sender's certificate MUST come first in the list. Each following certificate MUST directly certify the one preceding it.
有证书链验证的可视化表示here。希望对你有帮助。