openssl - 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"
访问过的链接
解决方案
证书中主题和颁发者字段的定义属性由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 属性很可能无论如何都会被忽略,所以我不会费心设置它们。
推荐阅读
- c - 使用指针作为函数参数读取并显示姓名和年龄
- angular - 使用 Angular 7 在两个同级组件之间进行通信的方法,而无需为两者使用公共服务
- c - 带有返回值的 C 中的声明错误
- mysql - 将数据添加到 myadminPhp
- bootstrap-4 - 在引导程序中并排制作表单 div
- windows - 如何在 ShellExtInit::Initialize 中使用 SHCreateShellItemArrayFromDataObject?
- java - for 循环如何与实例一起使用?
- ios - 无法将自定义类数组保存到 UserDefaults
- exim - Exim v4.91: Cant Enable IGNORE_SMTP_LINE_LENGTH_LIMIT = 1 macro to allow long lines
- javascript - 如何确定在您所在的州选中了哪个复选框?