使用OpenSSL生成带有主体名称的客户端证书。

8
我需要生成一个客户端身份验证证书,其中“NT主体名称”和“RFC 822名称”在Subject Alternative Name下,类似于此证书,如macOS密钥链访问中所示(模糊的字段值是AD UPN,例如test@domain.com): example certificate with principal name 我已尝试使用OpenSSL生成客户端身份验证证书,命令如下: openssl req -x509 -config cert_config -extensions 'my server exts' -nodes -days 365 -newkey rsa:4096 -keyout client.key -out client.crt 并且这是cert_config文件:
[ req ]
    prompt             = no
    distinguished_name = my dn

[ my dn ]
            commonName = Test
           countryName = US
          localityName = Anywhere
      organizationName = Test
organizationalUnitName = Dev
   stateOrProvinceName = CO
          emailAddress = info@test.com
                  name = Test Cert
               surname = Cert
             givenName = Test
              initials = TC

[ my server exts ]
      extendedKeyUsage = 1.3.6.1.5.5.7.3.2,1.3.6.1.4.1.311.20.2.2
        subjectAltName = otherName:1.3.18.0.2.4.318;UTF8:test@example.com

但我无法正确格式化主题备用名称以匹配上面图片中的示例。在OpenSSL文档中的主题备用名称下,我找不到“NT Principal Name”或“RFC 822 Name”的定义。当我查看通过上述命令生成的证书时,在钥匙串访问中我看到:

produced client certificate

如何在我的客户端认证证书中指定主题备用名称下的“NT Principal Name”和“RFC 822 Name”字段?


2
Stack Overflow是一个关于编程和开发问题的网站。这个问题似乎不属于编程或开发范畴。请参阅帮助中心中的我可以在这里问什么样的问题。也许超级用户Unix&Linux Stack Exchange更适合提问。另请参阅我应该在哪里发布Dev Ops相关问题? - jww
2
你有没有找到解决办法? - Andrew
3
对于“RFC 822名称”,我猜想我们应该使用subjectAltName = email:whatever@email.domain。对于“NT Principal Name”,我不太确定,但是对于UPN,我可以使用otherName:1.3.6.1.4.1.311.20.2.3;UTF8:test@example.com成功运行,即使用了不同的OID号码。(虽然这个问题比较久远,但如果能帮助到其他人,我会添加我所用的方法) - ramtech
1个回答

3
我也曾经长时间苦恼于这个问题......我参与了 EFS 恢复代理证书的生成,并在 Subject Alternative Name 字段中填写了内容,其中当然有很多有趣的东西,但不幸的是,并没有明确的示例:https://learn.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate?view=win10-ps
通过下载一个很棒的工具 XCA https://www.hohnstaedt.de/xca/ 并查看生成的证书的内容 cipher.exe /r: 用于 EFS 恢复代理,
生成所需的 OpenSSL 字符串。
openssl req -x509 -nodes -newkey rsa:4096 -keyout efs.key -out efs.cer -days 36500 -subj '/OU=EFS File Encryption Certificate/L=EFS/CN=efs' -addext 'extendedKeyUsage=1.3.6.1.4.1.311.10.3.4.1' -addext 'basicConstraints=CA:FALSE' -addext 'subjectAltName=otherName:msUPN;UTF8:sb@sb.local'

在这里,您将了解如何插入“主体名称”和“替代主题名称” :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接