Допустимые символы поля O=

Здравствуйте.
какие символы являются допустимыми для поля названия организации?
Существуют ли требования и регламент для набора символов, которые могут использоваться в данном поле?

Названия организаций берутся из ГБД ЮЛ. При обработке данных полученных из ГБД ЮЛ символы переноса строки, при наличии, удаляются. Других корректировок нет.

Добавлю немного технических подробностей, может быть будет полезно.

Итак, речь идет о структуре сертификата, а значит о RFC 5280, в частности нас интересует поле Subject. В документе сказано что Subject - это Name, описание приведено в разделе про поле Issuer:

   Name ::= CHOICE { -- only one possibility for now --
     rdnSequence  RDNSequence }

   RDNSequence ::= SEQUENCE OF RelativeDistinguishedName

   RelativeDistinguishedName ::=
     SET SIZE (1..MAX) OF AttributeTypeAndValue

   AttributeTypeAndValue ::= SEQUENCE {
     type     AttributeType,
     value    AttributeValue }

   AttributeType ::= OBJECT IDENTIFIER

   AttributeValue ::= ANY -- DEFINED BY AttributeType

   DirectoryString ::= CHOICE {
         teletexString           TeletexString (SIZE (1..MAX)),
         printableString         PrintableString (SIZE (1..MAX)),
         universalString         UniversalString (SIZE (1..MAX)),
         utf8String              UTF8String (SIZE (1..MAX)),
         bmpString               BMPString (SIZE (1..MAX)) }

Упомянутый выше O= - это один из RelativeDistinguishedName, элемент RDNSequence. Соответственно значение может быть закодировано одним из 5 способов.

Посмотрим как это реализовано в сертификатах НУЦ (на примере тестового сертификата из SDK):

$ openssl asn1parse -i -inform PEM -in AUTH_RSA256_b1b357b6761e1c8381bddb2d6262ee754ead7770.cer 
    0:d=0  hl=4 l=1598 cons: SEQUENCE          
    4:d=1  hl=4 l=1062 cons:  SEQUENCE          
    8:d=2  hl=2 l=   3 cons:   cont [ 0 ]        
   10:d=3  hl=2 l=   1 prim:    INTEGER           :02
   13:d=2  hl=2 l=  20 prim:   INTEGER           :5DB4D0ED77B78B42B123E552EDB206B5BCDBACBF
   35:d=2  hl=2 l=  13 cons:   SEQUENCE          
   37:d=3  hl=2 l=   9 prim:    OBJECT            :sha256WithRSAEncryption
   48:d=3  hl=2 l=   0 prim:    NULL              
   50:d=2  hl=2 l=  45 cons:   SEQUENCE          
   52:d=3  hl=2 l=  11 cons:    SET               
   54:d=4  hl=2 l=   9 cons:     SEQUENCE          
   56:d=5  hl=2 l=   3 prim:      OBJECT            :countryName
   61:d=5  hl=2 l=   2 prim:      PRINTABLESTRING   :KZ
   65:d=3  hl=2 l=  30 cons:    SET               
   67:d=4  hl=2 l=  28 cons:     SEQUENCE          
   69:d=5  hl=2 l=   3 prim:      OBJECT            :commonName
   74:d=5  hl=2 l=  21 prim:      UTF8STRING        :ҰКО 3.0 (RSA TEST)
   97:d=2  hl=2 l=  30 cons:   SEQUENCE          
   99:d=3  hl=2 l=  13 prim:    UTCTIME           :220118044535Z
  114:d=3  hl=2 l=  13 prim:    UTCTIME           :230118044535Z
  129:d=2  hl=3 l= 173 cons:   SEQUENCE          
  132:d=3  hl=2 l=  30 cons:    SET               
  134:d=4  hl=2 l=  28 cons:     SEQUENCE          
  136:d=5  hl=2 l=   3 prim:      OBJECT            :commonName
  141:d=5  hl=2 l=  21 prim:      UTF8STRING        :ТЕСТОВ ТЕСТ
  164:d=3  hl=2 l=  21 cons:    SET               
  166:d=4  hl=2 l=  19 cons:     SEQUENCE          
  168:d=5  hl=2 l=   3 prim:      OBJECT            :surname
  173:d=5  hl=2 l=  12 prim:      UTF8STRING        :ТЕСТОВ
  187:d=3  hl=2 l=  24 cons:    SET               
  189:d=4  hl=2 l=  22 cons:     SEQUENCE          
  191:d=5  hl=2 l=   3 prim:      OBJECT            :serialNumber
  196:d=5  hl=2 l=  15 prim:      PRINTABLESTRING   :IIN123456789011
  213:d=3  hl=2 l=  11 cons:    SET               
  215:d=4  hl=2 l=   9 cons:     SEQUENCE          
  217:d=5  hl=2 l=   3 prim:      OBJECT            :countryName
  222:d=5  hl=2 l=   2 prim:      PRINTABLESTRING   :KZ
  226:d=3  hl=2 l=  24 cons:    SET               
  228:d=4  hl=2 l=  22 cons:     SEQUENCE          
  230:d=5  hl=2 l=   3 prim:      OBJECT            :organizationName
  235:d=5  hl=2 l=  15 prim:      UTF8STRING        :АО "ТЕСТ"
  252:d=3  hl=2 l=  24 cons:    SET               
  254:d=4  hl=2 l=  22 cons:     SEQUENCE          
  256:d=5  hl=2 l=   3 prim:      OBJECT            :organizationalUnitName
  261:d=5  hl=2 l=  15 prim:      UTF8STRING        :BIN123456789021
  278:d=3  hl=2 l=  25 cons:    SET               
  280:d=4  hl=2 l=  23 cons:     SEQUENCE          
  282:d=5  hl=2 l=   3 prim:      OBJECT            :givenName
  287:d=5  hl=2 l=  16 prim:      UTF8STRING        :ТЕСТОВИЧ
...

Для organizationName используется UTF8STRING :АО "ТЕСТ", то есть технически в сертификате может быть записана любая UTF-8 строка. Естественно важно иметь в виду сказанное выше - то, что данные из ГБД ЮЛ перед записью в сертификат проходят дополнительную обработку.

Но это еще не конец истории, так как вопрос стоит о значении поля O=, то есть, вероятно, не совсем о том, как значение записано в сертификате, а о том, каким оно может быть тогда, когда из поля Subject сертификата формируют строковое представление. Обратимся к RFC 2253, а именно к разделу Converting an AttributeValue from ASN.1 to a String. Как видите, тут определены правила экранирования символов. Далее в том же документе описан алгоритм восстановления оригинального значения из строкового представления.

1 Симпатия

Приятно видеть такой анализ глубокий.
Я придерживаюсь мнения. что мусор, который может быть записан в ГБД ЮЛ, не является поводом тащить этот мусор в систему сертификатов.
А вопрос случился из-за того, что строка в УТФ-8 не смогла попасть правильно в базу данных, где по умолчанию используется кодировка УТФ-8.
пример
ТОВАРИЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ «КОМПАНИЯ «РОГА КОПЫТА ОПТОМ»
т.е. символы “«” и “»” не должны были находится в Subject

Мы не можем в одностороннем порядке менять названия зарегистрированные в ГБД ЮЛ. Символы “«” и “»” поддерживаются в UTF-8. Если вы считаете, что их название мусор, то обратитесь к владельцам организации либо к ГБД ЮЛ.