我使用 X.509 客户端证书通过双向 TLS 对一组定义明确的 Windows 客户端进行身份验证。存在一个证书模板,该模板向该组中所有客户端颁发此类证书,但不向其他客户端颁发。
在服务器端,我可以运行评估 X.509 证书的代码,以查看它是否由该模板颁发。
但是,模板名称或 ID 不是 X.509 数据的一部分。
还有其他方法可以通过模板将唯一信息放入证书中吗?例如
- 修改主题(例如,包含一些通用 AD 属性或固定值)
- 添加或修改另一个 x.590 证书属性
看来我可以使用来实现这一点
- 从特定的中间 CA 颁发证书(通过受信任的根列表在服务器上易于验证)
- 使用自定义密钥使用扩展(需要服务器端的特定代码)
然而,这两种方法的部署都相当困难。
(这是Windows 证书模板:如何在 SSL/TLS 客户端证书中包含组(或 OU)声明我可能问错了问题)
答案1
但是,模板名称或 ID 不是 X.509 数据的一部分。
事实证明那是错的,我只是错过了。
模板 ID 和版本以 OID 编码1.3.6.1.4.1.311.21.7定义为MS-WCEE 2.2.2.7.7.2 szOID_CERTIFICATE_TEMPLATE