我正在管理 Windows 2008 ADCS CA,并且已经意识到使用 SAN 颁发证书的安全风险。因此,我测试了在请求中颁发带有 SAN 的 PKCS10 文件,并且在应该被阻止时,它却颁发了带有 SAN 的证书。
为了确保万无一失,我使用命令 certutil -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2 (注意减号)来删除 SAN 标志(如果存在),但实际上不存在。 图像
但是,当使用如下内容时,这会阻止从附加请求属性中添加 SAN:san:dns=webmail.domainc.com&dns=mail.domainc.com&dns=autodiscover.domainc.com
那么,有没有办法可以完全阻止 SAN 颁发证书,无论它们在哪里指定?
答案1
嗯,实际上,您已经做了应该做的事情,以防止通过自动请求批准将未经授权的主体名称注入证书中。只要 SAN 扩展经过身份验证(嵌入在 CSR 中),就可以拥有 SAN 扩展。Mark Henderson 的评论是正确的,您错误地理解了这个问题。真正的问题不在于 SAN,而在于它是如何添加到 CSR 中的。允许未经身份验证的属性使用 SAN 是不好的,因为它们会在未经验证的情况下被处理并包含在证书中。
您还可以做什么:要求 CA 管理员批准所有使用来自传入请求(而不是来自 Active Directory)的主题值的证书模板。仍然需要对不受信任的来源进行 SAN 值检查。对于从 AD 自动构建主题的模板,无需执行此操作,因为这些模板将完全忽略请求中包含的主题信息,因此它们不会受到影响。