在 X509 证书 DN 的通用名称字段中(如 OID“2.5.4.3”的 ASN.1 表示法中所定义),允许的值是多少?
我知道限制最多为 64 个字符,但是否允许所有字符?数字?
例如。允许使用 .
吗? IP 地址 (x.x.x.x) 是否符合 ASN 定义的有效序列?
允许使用域名吗?
最佳答案
可分辨名称中的通用名称属性编码为:
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 中的服务器名称进行匹配;通常,首选主题替代名称扩展,但客户端更广泛地支持通用名称)。
关于security - X.509 证书的 "common name"属性中允许使用哪些字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5136198/