签署证书签名请求后,主题中缺少 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验证访问服务器)

证书上的“签名算法”到底是啥意思?使用哪种签名算法来签署我的证书?

使用第三方电子合同平台签电子合同该怎么签?

PDF数字证书签名怎么弄?

如何判断使用啥配置文件/签名证书来签署 .ipa?

签署代码后多久可以摆脱智能屏幕警告?