Атрибут общего имени в отличительном имени кодируется как:
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 кодовые точки (использование UTF-16 для кодовых точек за пределами 0xFFFF с bmpString
); UTF-8 является предпочтительной кодировкой (по крайней мере, стандарты говорят так).
Что касается X.509 (см. RFC 5280 ), содержание элементов DN не имеет значения, кроме сравнений на равенство; Это означает, что вы можете поместить любую последовательность символов по своему желанию, если вы делаете это последовательно. RFC 5280 предписывает регистронезависимое сравнение для элементов имени в кодировке UTF-8, и это непросто в общем контексте Unicode: см. Раздел 7.1, который ссылается на RFC 4518 и 3454, Кроме того, «общее имя» часто отображается пользователю (по крайней мере, в системах, использующих сертификаты X.509, которые имеют отображение и физического пользователя), поэтому вы, вероятно, захотите использовать строку, которая имеет смысл или, по крайней мере, не слишком страшна для человека, и вы можете попытаться избежать нелатинских сценариев.
Размещение DNS-имени в атрибуте «common name» является обычной практикой для сертификатов сервера HTTPS: см. RFC 2818 (сертификаты сервера содержат имя сервера, которое клиент сопоставляет с именем сервера в URL; обычно для этого предпочтительнее расширение Subject Alt Name, но общее имя несколько шире поддерживается клиентами).