在X509证书的DN中,常用名称字段,根据OID "2.5.4.3"的ASN.1表示法,允许哪些值?
我知道限制是最多64个字符,但是否允许使用所有字符?数字?
例如:是否允许使用.
符号?IP地址(x.x.x.x)是否符合ASN定义的有效序列?
是否允许使用域名?
在X509证书的DN中,常用名称字段,根据OID "2.5.4.3"的ASN.1表示法,允许哪些值?
我知道限制是最多64个字符,但是否允许使用所有字符?数字?
例如:是否允许使用.
符号?IP地址(x.x.x.x)是否符合ASN定义的有效序列?
是否允许使用域名?
Distinguished Name 中的通用名称属性编码方式为:
X520CommonName ::= CHOICE {
teletexString TeletexString (SIZE (1..ub-common-name)),
printableString PrintableString (SIZE (1..ub-common-name)),
universalString UniversalString (SIZE (1..ub-common-name)),
utf8String UTF8String (SIZE (1..ub-common-name)),
bmpString BMPString (SIZE (1..ub-common-name)) }
其中ub-common-name
为64。最后三种编码允许使用所有Unicode码点(对于超过0xFFFF的码点,使用UTF-16和bmpString
);UTF-8是首选编码(至少标准中是这样规定的)。
就X.509而言(参见RFC 5280),DN元素的内容在相等比较之外无关紧要;这意味着您可以放置任何字符序列,只要您保持一致即可。RFC 5280强制使用UTF-8编码的名称元素进行大小写不敏感的比较,在Unicode的一般上下文中并不容易:请参见第7.1节,其中链接到RFC 4518和3454。此外,“常用名称”通常会显示给用户(至少在使用具有显示和实际用户的X.509证书的系统上),因此您可能希望使用有意义或至少不太可怕的字符串,并尝试避免非拉丁脚本。
将DNS名称放入“常用名称”属性中是HTTPS服务器证书的常见实践:请参见RFC 2818(服务器证书包含服务器名称,客户端将其与URL中的服务器名称进行匹配;通常,Subject Alt Name扩展更受客户端支持,但常用名称在客户端中的支持范围略有广泛)。
www-cs-01.oracle.com
,它用于 www.oracle.com
,所以 CN 不同于 DNS 名称,尽管这不是你要问的。由于 CA 通常从门户网站颁发证书,而门户网站在历史上使用 CN 中的域,我认为你很难找到一个在那里有其他内容而不是 DNS 名称的站点。即使是相对较新的 CA letsencrypt.org 也遵循这个惯例。 - tresfCN=example.com/emailAddress=test@example.com/favouriteDrink=tequila
。还有许多其他字段可以放在证书通用名称中。openssl x509 -text
验证证书是否按照我描述的方式显示。-----BEGIN CERTIFICATE-----
MIIDOzCCAiOgAwIBAgIBCzANBgkqhkiG9w0BAQUFADCBqzEmMCQGA1UEAxMdV2Vz
dHBvaW50IENlcnRpZmljYXRlIFRlc3QgQ0ExEzARBgNVBAgTCkxhbmNhc2hpcmUx
CzAJBgNVBAYTAlVLMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbTFAMD4G
A1UEChM3V2VzdHBvaW50IENlcnRpZmljYXRlIFRlc3QgUm9vdCBDZXJ0aWZpY2F0
aW9uIEF1dGhvcml0eTAeFw0xMTA3MzEyMTAxMTdaFw0yMTA3MjgyMTAxMTdaMFAx
FDASBgNVBAMTC2V4YW1wbGUuY29tMR8wHQYJKoZIhvcNAQkBFhB0ZXN0QGV4YW1w
bGUuY29tMRcwFQYKCZImiZPyLGQBBRMHdGVxdWlsYTCBnzANBgkqhkiG9w0BAQEF
AAOBjQAwgYkCgYEAuCqI3aNbSkRpA9VuGOmeVQ010Oaawsz4tcW2FQChJDOv6PuT
ucy5IijvaVewotDjnuVzPpBVW5EmC8Qapradomhb6FtFPyH/hGSnhLtht3Ln6stJ
ZkAjvr/wjWDy+3Gy/P5r5weUNWVm2AaQgk2xumx49EIXyzwOEHAhqTE7iEECAwEA
AaNIMEYwCQYDVR0TBAIwADA5BggrBgEFBQcBAQQtMCswKQYIKwYBBQUHMAGGHWh0
dHA6Ly9vY3NwLmV4YW1wbGUuY29tOjg4ODgvMA0GCSqGSIb3DQEBBQUAA4IBAQBL
oz035PphO4yUx7FJVaZjxLgTM4wLrcn2ONGm015/ECO+1Uxj3hWb6/EIDDKV/4e8
x0HDF69zyawYLD1th5tBcZLkV/Dat/Tzkt3boLOCGo2I1P+yjqxlb7BZCk7PEs3+
zjWF2hMcXtAwOIrsRuvXp4eTGwigKLAt/H02US/fa2dXFbOnz91V7oH8ZvynIl/n
hpELPzVWX/pBnHEGA9Bi0jviCKuvQisfaJ8XCiA73qH6CkSoZ2fClnrs+pJNj8i6
vtcMx8htn7FsyB3puVww86JSQ+VDKlQkFbPVla/4Aavzwz8djjVYEWwSgm+tw3jB
zUP/k5Aln5cXNo50KOip
-----END CERTIFICATE-----
dNSName
扩展中)。只是为了澄清,我特别回答了关于 IP 地址的部分问题(因为其他部分已经有了其他答案)。 - Bruno