Cra*_*lus 35 security asn.1 x509
在X509证书的DN 的公共名称字段中,如OID"2.5.4.3"的ASN.1表示法中所定义,允许的值是多少?
我知道限制最多64个字符,但是所有字符都允许吗?数字?
例如是.
允许的吗?IP地址(xxxx)是ASN定义的有效序列吗?
是否允许域名?
Tho*_*nin 53
可分辨名称中的公共名称属性编码为:
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)) }
Run Code Online (Sandbox Code Playgroud)
其中ub-common-name
是64.最后三个编码允许使用所有的Unicode的代码点(使用UTF-16进行的码点以外与为0xFFFF 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中的服务器名称匹配;通常,主题Alt Name扩展名这是首选,但客户端更广泛地支持通用名称).
如果您的主要问题是要知道您是否可以(或应该)在主题DN的公共名称中放置IP地址,答案是否定的.
这与X.509格式无关,而是与说明如何解释它们的内容的规范无关.
在谈到HTTPS时,RFC 2818说明了以下有关IP地址的信息:
在某些情况下,URI被指定为IP地址而不是主机名.在这种情况下,
iPAddress
subjectAltName
必须存在于证书中,并且必须与URI中的IP完全匹配.
这意味着CN根本不应该用于IP地址,并且SAN条目类型必须是IP地址,而不是DNS.(有些浏览器不会完全实现它,所以它们可能更宽容.Java默认主机名验证器将是严格的.)
现在,RFC 6125中也定义了证书身份验证的最佳实践,但它认为IP地址超出了范围(对于反对在其中使用IP地址的参数,值得阅读本节).如果您查看有关其他协议的RFC摘录,则有些会对IP地址(例如LDAP)有类似的限制.
小智 6
虽然上面的答案涵盖了你通常会在那里找到的内容,但不要忘记,因为这是X.509,你实际上可以在那里放置任何东西.例如,下面的证书使用0.9.2342.19200300.100.1.5,这是"最喜欢的饮料"(参见http://www.alvestrand.no/objectid/0.9.2342.19200300.100.1.5.html).Openssl了解这一点,因此通用名称显示为CN = 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-----
Run Code Online (Sandbox Code Playgroud)
X.509证书的“公用名”属性中允许使用什么字符串?
我真的不能回答在那里发生的事情,但我可以告诉你什么不进去:服务器名称,如主机名(www.example.com),内部名称(如www)和IP地址(如127.0.0.1或100.100.100.100)。
IETF和CA / Browser论坛均不建议将DNS名称或服务器名称放在通用名称(CN)中。尽管已弃用,但目前不禁止使用。CA / B很重要,因为这是浏览器遵循的-浏览器不遵循IETF。
IETF在RFC 6125第2.3节中弃用了该做法,而CA / B在《基准要求》第9.1.1节中弃用了该做法。
所有服务器名称都在“使用者备用名称”(SAN)中。CA / B基准要求第9.2.1节要求在SAN中放置服务器名称。在RFC 5280发行过程中,IETF更为宽容,但在RFC 6125的6.4.4节下的验证过程中要求使用IETF。
归档时间: |
|
查看次数: |
35341 次 |
最近记录: |