我需要在主题备用名称下生成一个带有“NT 主体名称”和“RFC 822 名称”的客户端身份验证证书,类似于此证书,如 macOS 钥匙串访问中所示(隐藏字段值为 AD UPN,例如test@domain.com
):
我已经尝试使用 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
Run Code Online (Sandbox Code Playgroud)
但我无法更正主题替代名称的格式以匹配上图中的示例。我在OpenSSL 文档中的主题备用名称下找不到“NT 主体名称”或“RFC 822 名称”的定义。当我在钥匙串访问中查看上述命令生成的证书时,我看到:
如何在客户端身份验证证书的主题备用名称下指定“NT 主体名称”和“RFC 822 名称”字段?
我也被这个问题困扰了很长时间...我正在为 EFS 恢复代理生成证书,并且该字段主题备用名称就在那里。这里当然写了很多有趣的东西,但不幸的是没有明确的例子:https://learn.microsoft.com/en-us/powershell/module/pkiclient/new-selfsignedcertificate ?view=win10-ps
通过下载一个很棒的实用程序 XCA https://www.hohnstaedt.de/xca/
并通过查看生成的证书内容 cipher.exe /r: for EFS Recovery Agent
生成 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'
Run Code Online (Sandbox Code Playgroud)
在这里您将了解如何插入“主体名称”和“主体备用名称”;)