如所给出的在本文件中,我们可以用来忽略inpolicy_any
的大部分字段。忽略这些字段肯定有一些缺点,subject
certificate request
它会导致一些与安全相关的问题吗?
给出policy_any
如下:
[ policy_any ]
countryName = supplied
stateOrProvinceName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
如果我也设置了怎么commonName = optional
办countryName = optional
?使用它是个好主意吗policy_any
?
谢谢你的时间!
答案1
该政策只是整理和检查传入的证书签名请求是否符合公司政策(或更准确地说,您组织的证书政策 (CP) 和/或认证实践声明 (CPS))的基本帮助。
如果您在命令行上签署证书,则安全优势可以忽略不计 - 毕竟,您(或其他用户)可以使用 openssl 的-config <filename>
选项来使用替代配置文件并绕过上述策略。在此示例中,捕获拼写错误可能会很有用。
另一方面,如果您将其用作较大证书颁发机构的一部分,例如,用户通过 Web 门户提交请求,则此策略部分可能会帮助您捕获未包含所有必需字段的签名请求根据您的公司政策。
也就是说,如果设置supplied
为您的示例中的那样,则这不是一个太多的检查,因为它不会检查条目是否有效或是否遵循公司政策。例如,commonName
当您的组织名为 acme.com 时,它不会检查 www.google.com!
使用match
而不是supplied
对某些字段有所帮助,例如,强制organizationalUnit
在您的组织的证书中保持一致。但是,您无法match
在该commonName
字段上使用,因为每个证书中的字段都会发生变化。
对于某些证书配置文件,名称约束可能会为您提供帮助。
在您的示例中,更改commonName
和countryName
tooptional
只会阻止它们成为强制性的。
请注意,不在该列表中的字段将从签名证书中静默删除。也就是说,如果您的请求设置了该generationQualifier
字段III
,则会从证书中删除该字段(除非您使用该preserveDN
选项)。
您问题中的列表只是最常用字段的文档页面中的示例。您还可以使用更多可能的字段,例如initials
、givenName
和generationQualifier
。 RFC 5280 中列出了一些,如果它们不足以满足您的需求,您甚至可以定义自己的。 OpenSSL 所要求的只是至少存在一个字段。