我最近开始使用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
命令,我该如何解决呢?
答案 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
会执行相同的操作。