1

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

使用该中间 CA,我为 CSR 定义了它可以签名的策略,如下所示:

[ policy_match ] organizationUnitName=match

我尝试签署的 CSR 具有类似 DN的 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命令,我该如何解决这个问题?

4

1 回答 1

1

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

并且要清楚,您不仅是说 DN按此顺序包含两个 OU,而是说它完全由它们组成,没有任何 O(组织名称)?如果是这样,那似乎违反了 X.520 规则,正如我在对您的 Q 的评论中指出的那样——尽管 AFAICS 该规则没有被带到 PKIX 甚至 LDAP 中,而且它肯定不是由 OpenSSL 强制执行的。

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

可以使用选项或配置设置openssl ca为具有此类重复属性(也包括策略之外的属性)的名称颁发证书。默认情况下,它会做同样的事情。-preserveDNpreserve=yx509 -req -CA*

于 2019-01-01T10:58:14.530 回答