kambm Asked: 2024-04-21 01:33:19 +0800 CST2024-04-21 01:33:19 +0800 CST 2024-04-21 01:33:19 +0800 CST 主题名称 (SN)/主题备用名称 (SAN) 在 Microsoft 公钥基础设施 (PKI) 中的作用是什么? 772 什么是主题名称/主题备用名称以及它们之间有何不同? 特别是“主题名称”选项卡下方的模板。除了在注册证书时将信息放入主题选项卡中的额外步骤之外,这对正常证书请求有何变化。 主题名称 (SN)/主题备用名称 (SAN) 在 Microsoft 公钥基础设施 (PKI) 中的作用是什么?如何使用 SAN,以及哪些场景可以从将其包含在证书中受益? ssl-certificate 3 个回答 Voted Best Answer garethTheRed 2024-04-22T02:14:59+08:002024-04-22T02:14:59+08:00 证书将公钥与主体绑定。证书的主题是持有者的详细信息。你的问题就像问“护照上的名字有什么作用? ”。 主题字段和主题备用名称 (SAN) 扩展都是识别主题或持有人的两种方式。 最初,在版本 1 证书中,没有证书扩展的概念(例如主题备用名称和基本约束),定义证书主题的唯一方法是使用主题字段。这需要一个可分辨名称,该名称在 X.500 中定义,由通用名称 (CN)、组织 (O) 和国家/地区 (C) 等元素组成。这对于公司地址甚至个人地址等地址相当有效,但对于 DNS 系统则不太有效 - X.500 AFAIK 中没有主机名元素。如果您查看该网站的证书,您会发现颁发者是:CN = E1, O = Let's Encrypt, C = US- 并非不合理。 作为证书验证过程的一部分,浏览器希望在其地址栏中输入的 URL 的主机名元素与服务器证书的主题相匹配。浏览器供应商希望将主机的 FQDN 作为通用名称输入到证书中(查看此站点的证书,您会发现 CN 是serverfault.com)。 然而,输入 CN 中服务器的 FQDN 有点麻烦 - 如果我们在浏览器中输入服务器的 IP 地址会怎么样?此外,如果证书的主题由其他内容(例如 Windows 中客户端证书的 UPN)标识,该怎么办?我们是否也将其压缩到 CN 中,或者将其添加为电子邮件元素?这可能会变得混乱并且容易出错。 版本 3 证书引入了扩展的概念,其中一个扩展是主题备用名称 (SAN)。这允许更详细地定义名称类型。例如,它支持 DNS、IP 地址、电子邮件地址、URL 等。因此,客户不必猜测主题指的是什么。SAN 还可以包含多个条目,因此您可以有一个用于服务器的 FQDN,另一个用于其 IP 地址,因此在浏览器中输入任一条目都将被视为有效。 如今,浏览器甚至不查看主题字段,并期望服务器的主题(DNS、IP 地址等)位于 SAN 中。 如果您想了解其含义的更多详细信息,RFC 5280将是一本很好的睡前读物, RFC 2818 第 3.1 节对如何在 HTTPS 上下文中使用它们进行了简单解释。有关匹配主题名称的更一般性讨论,请考虑RFC 6125(或者仅查看它的活泼标题:-)) Acenl12 2024-04-21T05:59:04+08:002024-04-21T05:59:04+08:00 主题名称标识为其颁发证书的名称。例如,对于像 google.com 这样的网站,其中一个是 google.com,另一个是www.google.com Christopher Sinclair 2024-04-21T07:48:10+08:002024-04-21T07:48:10+08:00 使用者名称只是您希望公共证书对其有效的域的 FQDN。 使用者备用名称 (SAN) 是您希望同一证书也有效的任何其他 FQDN 。当您希望单个证书“覆盖”多个 FQDN 时,SAN 非常有用。 例如,如果您正在部署 Kubernetes 集群,您可能需要 、 和 的单个证书api.<cluster>.<domain>,api-int.<cluster>.<domain>而*.apps.<cluster>.<domain>不是订购三个单独的证书。 这只会减少总体证书数量(这更容易管理),同时仍然保护和覆盖系统的每个组件。
证书将公钥与主体绑定。证书的主题是持有者的详细信息。你的问题就像问“护照上的名字有什么作用? ”。
主题字段和主题备用名称 (SAN) 扩展都是识别主题或持有人的两种方式。
最初,在版本 1 证书中,没有证书扩展的概念(例如主题备用名称和基本约束),定义证书主题的唯一方法是使用主题字段。这需要一个可分辨名称,该名称在 X.500 中定义,由通用名称 (CN)、组织 (O) 和国家/地区 (C) 等元素组成。这对于公司地址甚至个人地址等地址相当有效,但对于 DNS 系统则不太有效 - X.500 AFAIK 中没有主机名元素。如果您查看该网站的证书,您会发现颁发者是:
CN = E1, O = Let's Encrypt, C = US
- 并非不合理。作为证书验证过程的一部分,浏览器希望在其地址栏中输入的 URL 的主机名元素与服务器证书的主题相匹配。浏览器供应商希望将主机的 FQDN 作为通用名称输入到证书中(查看此站点的证书,您会发现 CN 是
serverfault.com
)。然而,输入 CN 中服务器的 FQDN 有点麻烦 - 如果我们在浏览器中输入服务器的 IP 地址会怎么样?此外,如果证书的主题由其他内容(例如 Windows 中客户端证书的 UPN)标识,该怎么办?我们是否也将其压缩到 CN 中,或者将其添加为电子邮件元素?这可能会变得混乱并且容易出错。
版本 3 证书引入了扩展的概念,其中一个扩展是主题备用名称 (SAN)。这允许更详细地定义名称类型。例如,它支持 DNS、IP 地址、电子邮件地址、URL 等。因此,客户不必猜测主题指的是什么。SAN 还可以包含多个条目,因此您可以有一个用于服务器的 FQDN,另一个用于其 IP 地址,因此在浏览器中输入任一条目都将被视为有效。
如今,浏览器甚至不查看主题字段,并期望服务器的主题(DNS、IP 地址等)位于 SAN 中。
如果您想了解其含义的更多详细信息,RFC 5280将是一本很好的睡前读物, RFC 2818 第 3.1 节对如何在 HTTPS 上下文中使用它们进行了简单解释。有关匹配主题名称的更一般性讨论,请考虑RFC 6125(或者仅查看它的活泼标题:-))
主题名称标识为其颁发证书的名称。例如,对于像 google.com 这样的网站,其中一个是 google.com,另一个是www.google.com
使用者名称只是您希望公共证书对其有效的域的 FQDN。
使用者备用名称 (SAN) 是您希望同一证书也有效的任何其他 FQDN 。当您希望单个证书“覆盖”多个 FQDN 时,SAN 非常有用。
例如,如果您正在部署 Kubernetes 集群,您可能需要 、 和 的单个证书
api.<cluster>.<domain>
,api-int.<cluster>.<domain>
而*.apps.<cluster>.<domain>
不是订购三个单独的证书。这只会减少总体证书数量(这更容易管理),同时仍然保护和覆盖系统的每个组件。