当客户端验证服务器的证书时,它知道服务器的域名,然后它可以检查该域名是否存在于服务器证书的 SAN(主体备用名称)字段中。
当服务器验证客户端证书时,它不知道客户端的域名。这是否意味着客户端证书中的 SAN 毫无用处?
答案1
一般来说,由服务器(及其管理员)定义相互 TLS 中客户端身份验证/验证的要求。
我已经看到了解决这个问题的一系列方法。证书或公钥可以被固定。您可以根据 LDAP 等目录验证用户(可以注册 DN)。在某些情况下,您只关心颁发证书的 CA。有多种选项可以混合和匹配证书中提供的不同详细信息。真正不明智的一件事是在客户端证书中使用 SAN DNS 条目、SAN IP 或两者的组合。我们永远不应该假设客户端存在于 DNS 中或具有静态 IP。身份不应该基于动态因素。
答案2
客户端证书的 SAN 可以是域名、IP 地址、电子邮件地址,有时也可以是其他信息。没有要求它们必须是域名
客户端身份验证通常使用 IP 和电子邮件。但请记住,将首先检查 CN(通用名称)。
另外,请记住,某些实现将尝试对连接 IP 地址进行反向 DNS(PTR 记录)查找,并根据 SAN 字段进行验证。
答案3
参考文献这答案是,列出 UPN 的 SAN 值将域名指定为用户主体名称 (UPN) 后缀值的一部分,或者如果 SAN 值填充了其他备用标识符(例如 OID、UID 或用于 PKI/端点访问管理的其他 GUID),则可能不会,但我认为所有这些都会提供一些信息的可审计跟踪,以便在需要时进行跟进。