Jhon Gaido Asked: 2022-10-18 02:39:14 +0800 CST2022-10-18 02:39:14 +0800 CST 2022-10-18 02:39:14 +0800 CST 如何区分同一 CA 颁发的证书 772 我有一个由外部证书颁发机构 (CA) 签名的证书。如果我理解正确,证书颁发机构也可以签署我不知道的其他证书。我的问题是如何判断第三方证书颁发机构签署的证书属于我的公司,哪些不属于我的公司? 我的用例 我想从 PIV / CAC 卡启用基于证书的身份验证。所有证书均由第三方 CA 签署。我担心的是,我不知道的用户将能够使用由外部 CA 签名且不属于我公司的证书来验证自己的身份。 ssl security 2 个回答 Voted garethTheRed 2022-10-18T09:26:16+08:002022-10-18T09:26:16+08:00 参考您的用例,请记住证书仅提供身份和身份验证。 授权应该由应用程序控制 - 例如,使用目录 - 而不是证书。因此,这些未知用户很可能能够向您的应用程序提供已接受的证书,但该应用程序应该拒绝他们,不是通过证书验证失败,而是通过某种形式的 ACL 失败。 例如,您的 IIS 服务器可能会接受我的证书,它现在知道garethTheRed就是他声称的身份,但由于我没有在您的系统中注册,因此不应允许我登录到您的应用程序。 Best Answer user1686 2022-10-18T02:52:00+08:002022-10-18T02:52:00+08:00 通用证书建议,我不熟悉如何设置官方 PIV/CAC 系统: 证书有一个主题字段,CA 应该用所有者的正确详细信息填写该字段。如果您信任 CA 可以正确执行此操作,则将您的系统配置为仅接受具有已知主题的用户 - 通过匹配特定属性或仅匹配整个字符串化值。 例如,如果主题字段包含您的域的电子邮件地址,或者如果它有一个O属性(用于“组织”),那么您可能能够与之匹配。(虽然要注意注册重复组织名称的可能性——在美国,您还需要比较州或地区字段。) 如果主题没有任何特定于您的组织的内容,那么您必须保留属于每个员工的证书主题的中央列表。(Active Directory 已经具有将 X.509 主题映射到 AD 用户的内置机制。) 确保证书详细信息的正确性实际上是 CA 的一项工作(即证书所证明的内容),因此,如果您不信任此特定的第三方 CA 正确填写主题字段,那么您基本上无法信任完全是 CA。在这种情况下,您唯一的选择是将证书视为本质上是自签名的,并通过哈希匹配它们(参见下面的选项 4)。 如果存在 subjectAltName 扩展名,则可以以相同的方式使用。根据 NIST 发布的文档,真正的 PIV/CAC 证书有一个包含卡的 CHUID 的 SAN 值。如果您将非 PIV 证书放在 PIV 卡上,CA 将决定添加什么 subjectAltName——它可能包含员工的电子邮件地址等。 证书也有一个序列号,在其直接兄弟之间应该是唯一的,并且颁发者+序列号的组合必须是全局唯一的(因此您可以将其用作标识符)。 最后,有两种常用方法来区分单个证书,无论它们是如何颁发的:要么是 DER 形式的整个证书的散列(通常称为“指纹”或“指纹”),要么是仅其公钥的散列以 DER 形式(由于对 SubjectPublicKeyInfo 字段进行哈希处理,也称为“SPKI 哈希”)。 使用哪个哈希取决于证书的更新方式——如果更新继续使用相同的密钥对,那么相同的 SPKI 哈希将继续识别新证书(而每次更新将具有不同的指纹);但是,这在 PIV/CAC 系统中可能并不常见,因此仅使用指纹会更简单。
参考您的用例,请记住证书仅提供身份和身份验证。
授权应该由应用程序控制 - 例如,使用目录 - 而不是证书。因此,这些未知用户很可能能够向您的应用程序提供已接受的证书,但该应用程序应该拒绝他们,不是通过证书验证失败,而是通过某种形式的 ACL 失败。
例如,您的 IIS 服务器可能会接受我的证书,它现在知道garethTheRed就是他声称的身份,但由于我没有在您的系统中注册,因此不应允许我登录到您的应用程序。
通用证书建议,我不熟悉如何设置官方 PIV/CAC 系统:
证书有一个主题字段,CA 应该用所有者的正确详细信息填写该字段。如果您信任 CA 可以正确执行此操作,则将您的系统配置为仅接受具有已知主题的用户 - 通过匹配特定属性或仅匹配整个字符串化值。
例如,如果主题字段包含您的域的电子邮件地址,或者如果它有一个
O
属性(用于“组织”),那么您可能能够与之匹配。(虽然要注意注册重复组织名称的可能性——在美国,您还需要比较州或地区字段。)如果主题没有任何特定于您的组织的内容,那么您必须保留属于每个员工的证书主题的中央列表。(Active Directory 已经具有将 X.509 主题映射到 AD 用户的内置机制。)
如果存在 subjectAltName 扩展名,则可以以相同的方式使用。根据 NIST 发布的文档,真正的 PIV/CAC 证书有一个包含卡的 CHUID 的 SAN 值。如果您将非 PIV 证书放在 PIV 卡上,CA 将决定添加什么 subjectAltName——它可能包含员工的电子邮件地址等。
证书也有一个序列号,在其直接兄弟之间应该是唯一的,并且颁发者+序列号的组合必须是全局唯一的(因此您可以将其用作标识符)。
最后,有两种常用方法来区分单个证书,无论它们是如何颁发的:要么是 DER 形式的整个证书的散列(通常称为“指纹”或“指纹”),要么是仅其公钥的散列以 DER 形式(由于对 SubjectPublicKeyInfo 字段进行哈希处理,也称为“SPKI 哈希”)。
使用哪个哈希取决于证书的更新方式——如果更新继续使用相同的密钥对,那么相同的 SPKI 哈希将继续识别新证书(而每次更新将具有不同的指纹);但是,这在 PIV/CAC 系统中可能并不常见,因此仅使用指纹会更简单。