签署证书签名请求后,主题中缺少 UID 属性
Posted
技术标签:
【中文标题】签署证书签名请求后,主题中缺少 UID 属性【英文标题】:UID attribute is missing from the subject after that the certificate signing request is signed 【发布时间】:2022-01-19 18:48:56 【问题描述】:我有一个使用此命令生成的证书签名请求:
openssl req -config extensions -new -newkey rsa:4092 -nodes -keyout certificate.key -out certificate.csr
扩展文件包含这些字段(以及其他)
[req_distinguished_name ]
UID = ABC1234
CN = MyCertificateCN
如果我转储我得到的 csr 主题:
openssl req -noout -subject -in certificate.csr
subject=/UID=ABC1234/CN=MyCertificateCN
然后我使用我的内部 CA 签署我的请求:
openssl ca -out signed_certificate.pem -infiles certificate.csr
但是,当我转储签名证书时,缺少 UID 字段:
openssl x509 -noout -subject -in signed_certificate.pem
subject=/CN=MyCertificateCN
为什么会这样?我需要在 CA 中进行一些配置吗?
我还尝试通过提供subj
选项来覆盖openssl ca
命令中的主题,但不保留UID 属性。在openssl ca
命令中传递-config extensions
也无济于事。
【问题讨论】:
好的,但如果 UID 未被识别,则不会出现在 CSR 中。请注意,如果我使用相同的扩展文件创建自签名证书,则存在 UID 属性。因此,签名过程似乎出于某种原因将其删除。 @PresidentJamesK.Polk 这是 UID 属性的 OID:0.9.2342.19200300.100.1.1 docs.oracle.com/cd/E19341-01/817-5235/attribut.html 在[ca]
部分的默认配置文件(因为你没有指定另一个)中获取default_ca
的值,在具有该名称的部分中获取policy
,并在that 部分查看 OID 名称; 仅那些进入新证书的主题 DN,除非您指定 -preserveDN
,请参阅 the man page。 @PresidentJamesK.Polk 这个 UID 是用户 ID 不是唯一 ID,并且在 OpenSSL 中是已知的。这不是编程或开发。
"多值 RDN 可以通过在指定集合成员的 AttributeValueAssertions (AVA) 之间放置 +
字符而不是 /
来形成。示例:/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe
" @ 987654323@
【参考方案1】:
好的,我找到了保留 UID 属性的正确步骤:
1)
打开文件 /etc/pki/tls/openssl.cnf 并添加这些行 [new_oids] ...UID=0.9.2342.19200300.100.1.1 ... [策略匹配] ...UID = 可选 ... [政策_任何东西] ...UID = 可选 ...2)
在openssl req
命令中添加选项-subj "/UID=ABC1234+CN=MyCertificateCN"
和-multivalue-rdn
:openssl req -subj "/UID=ABC1234+CN=MyCertificateCN -multivalue-rdn -config extensions -new -newkey rsa:4092 -nodes -keyout certificate.key -out certificate.csr
3)
在openssl ca
命令中添加-subj "/UID=ABC1234+CN=MyCertificateCN"
和-multivalue-rdn
和-preserveDN
,如果您还想保留扩展名-extfile extensions
(在openssl req
命令中传递的相同文件-config
)
openssl ca -subj "/UID=ABC1234+CN=MyCertificateCN -multivalue-rdn -preserveDN -extfile extensions -out signed_certificate.pem -infiles certificate.csr
这样,在签名过程中,UID 属性和扩展名都会被保留。
【讨论】:
以上是关于签署证书签名请求后,主题中缺少 UID 属性的主要内容,如果未能解决你的问题,请参考以下文章
CA和证书(企业内网搭建CA服务器生成自签名证书,CA签署,实现企业内网基于key验证访问服务器)