我需要生成一个客户端身份验证证书,其中“NT主体名称”和“RFC 822名称”在Subject Alternative Name下,类似于此证书,如macOS密钥链访问中所示(模糊的字段值是AD UPN,例如
我已尝试使用OpenSSL生成客户端身份验证证书,命令如下:
test@domain.com
):
![example certificate with principal name](https://istack.dev59.com/Rd12E.webp)
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”的定义。当我查看通过上述命令生成的证书时,在钥匙串访问中我看到:
如何在我的客户端认证证书中指定主题备用名称下的“NT Principal Name”和“RFC 822 Name”字段?
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