首页 > 解决方案 > Openssl optionalCompanyName(可选公司名称)在命令中

问题描述

我做了一个 openssl 命令,所以我可以使用脚本来自动化它。我通过访问不同的问题和网站找到了所有选项,但找不到“可选公司名称”选项,我尝试了“可选公司名称”,但没有成功。

(/C) Country Name (2 letter code) [XX]:GB
(/ST) State or Province Name (full name) []:London
(/L) Locality Name (eg, city) [Default City]:London
(/O) Organization Name (eg, company) [Default Company Ltd]:XYZ
(/U) Organizational Unit Name (eg, section) []:XYZ
(/CN) Common Name (eg, your name or your server's hostname) []:- $DOMAIN
(/emailAddress) Email Address [] :- some@some.com
(/challengePassword) A challenge password :- strongpass
(/?) An optional company name []:PROBLEM

请帮忙。

export domain=SOMEDOMAINNAME
openssl req -nodes -newkey rsa:2048 -keyout $domain.key -out $domain.csr -subj "/C=GB/ST=London/L=London/O=XYZ/OU=XYZ UK/CN=$domain/emailAddress=some@some.com/challengePassword=strongpass/optionalCompanyName=PROBLEM"

多行相同的命令,因此易于阅读

export domain=SOMEDOMAINNAME
openssl req -nodes -newkey rsa:2048 -keyout $domain.key -out $domain.csr -subj  
"/C=GB/ST=London/L=London/O=XYZ/OU=XYZ UK/CN=$domain/emailAddress=some@some.com 
/challengePassword=strongpass/optionalCompanyName=PROBLEM"

访问过的链接

标签: opensslattributescommand

解决方案


证书中主题和颁发者字段的定义属性由ITU X.520定义。

没有定义“可选公司名称”项目。

我认为您指的是“组织名称”属性类型。这是使用“O”的 LDAP-NAME 定义的。

在你的例子中:

"/C=GB/ST=London/L=London/O=XYZ/OU=XYZ UK/CN=$domain/emailAddress=some@some.com /challengePassword=strongpass/optionalCompanyName=PROBLEM"

它是“/O=XYZ”,所以“组织”(或公司名称)是“XYZ”。

更新:

经过一番阅读,我知道你来自哪里,因为我以前从来没有遇到过这个:

“可选的公司名称:”是“ unstructuredName ”。

“unstructuredName”和“challengePassword”只是证书请求的一部分。所以它不是主题的一部分。因此,您不应在主题行中使用“/challengePassword=strongpass”。

您可以在默认的 openssl.conf 文件中看到这一点:

[ req ]
attributes      = req_attributes

[ req_attributes ]
challengePassword       = A challenge password
challengePassword_min       = 4
challengePassword_max       = 20
unstructuredName        = An optional company name

大多数 CA 似乎忽略了 Req 属性。请参阅 OpenSSL文档中的注释:

属性

这指定了包含任何请求属性的部分:其格式与 distinct_name 相同。通常,这些可能包含 challengePassword 或 unstructuredName 类型。OpenSSL 的请求签名实用程序当前忽略了它们,但某些 CA 可能需要它们。

目前 openssl 不提供任何从命令行设置 req 属性的方法。因此,唯一的方法是使用设置了这些属性的自定义 conf 文件。

如果你需要这样做,我会创建一个提示设置为“no”的 conf 文件并使用 -conf openssl 参数。请注意,当您将提示设置为“否”时,格式会发生一些变化。

由于 req 属性很可能无论如何都会被忽略,所以我不会费心设置它们。


推荐阅读