如何使用配置OpenSSL的策略对具有多个OU的证书进行签名?

时间:2018-12-31 23:45:25

标签: ssl openssl policy organizational-unit certificate-signing-request

我最近开始使用OpenSSL配置CA。根CA要求中间CA证书具有OU字段,以便中间CA的DN看起来像OU=group

借助该中间CA,我已经定义了可以签名的CSR策略:

[ policy_match ] organizationUnitName=match

我要签名的CSR具有DN,例如OU=group, OU=subgroup,但是命令openssl ca -in two_OUs.csr发出了错误:The organizationalUnitName field needed to be the same in the CA certificate (group) and the request (subgroup)

我试图通过两种方式修改政策:

[ policy_match ] organizationUnitName=match organizationUnitName=supplied

[ policy_match ] 0.organizationUnitName=match 1.organizationUnitName=supplied

第一个成功,但是不强制要求拥有两个OU。第二个失败,抱怨0.organizationalUnitName:unknown object type in 'policy' configuration

短暂地绕过ca命令以支持x509命令,我该如何解决呢?

1 个答案:

答案 0 :(得分:1)

您不能直接检查它。 openssl ca策略逻辑只能检查给定OID的一次出现的属性(实际上是RDN中的AVA)。从我没有真正一步步阅读代码的角度来看,我认为它应该检查 first ,而它似乎是您发布的值中的最后一个;您是否从使用LDAP约定“向后”显示DN的值中发布值?

要清楚一点,您不仅在说DN 按这个顺序包含两个OU,而且还说它完全由一个组成,没有任何O(组织名称) ?如果是这样,这似乎违反了X.520规则,正如我在对您的Q的评论中所指出的那样-尽管AFAICS该规则并未引入PKIX甚至LDAP中,并且肯定不会由OpenSSL实施。

如果您想通过检查两个OU的值来执行规则,则需要在OpenSSL之外进行操作,例如,使用openssl req显示请求信息并检查它与另一个程序(也许是awk或perl之类的文本处理程序)一起使用。

可以使用{{1},使用openssl ca来为具有重复属性的名称(也包括策略外的属性)使用<{1}}颁发证书}选项或-preserveDN配置设置。默认情况下,preserve=y会执行相同的操作。