Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
API регистрации сертификатов использует абстрактную нотацию синтаксиса (ASN.1) для определения, кодирования и декодирования запросов сертификатов и сертификатов, которые он передает между клиентскими компьютерами и центрами сертификации. ASN.1 можно концептуально разделить на набор правил синтаксиса и набор правил кодирования, как показано в следующих примерах.
Пример синтаксиса ASN.1
Запрос сертификата содержит, помимо прочего, имя сущности, выполняющей запрос или для которой выполняется запрос. Имя — это последовательность относительных различаемых имен X.500 (RDNs). Каждая RDN в последовательности состоит из идентификатора объекта (OID) и значения. Синтаксис ASN.1 для имени субъекта показан в следующем примере.
---------------------------------------------------------------------
-- Subject name
---------------------------------------------------------------------
Name ::= SEQUENCE OF RelativeDistinguishedName
RelativeDistinguishedName ::= SET OF AttributeTypeValue
AttributeTypeValue ::= SEQUENCE
{
type OBJECT IDENTIFIER,
value ANY
}
Пример кодирования ASN.1
API регистрации сертификатов использует различающиеся правила кодирования (DER) для кодирования предыдущего имени субъекта. Для DER требуется, чтобы каждый элемент имени был представлен триплетом TLV, где T содержит номер тега типа ASN.1, L содержит длину, а V — соответствующее значение. В следующем примере показано, как закодировано имя субъекта TestCN.TestOrg.
1. 30 23 ; SEQUENCE (0x23 = 35 Bytes)
2. | | 31 0f ; SET (f Bytes)
3. | | | 30 0d ; SEQUENCE (d Bytes)
4. | | | 06 03 ; OBJECT_ID (3 Bytes)
5. | | | | 55 04 03
6. | | | | ; 2.5.4.3 Common Name (CN)
7. | | | 13 06 ; PRINTABLE_STRING (6 Bytes)
8. | | | 54 65 73 74 43 4e ; TestCN
9. | | | ; "TestCN"
10. | | 31 10 ; SET (10 Bytes)
11. | | 30 0e ; SEQUENCE (e Bytes)
12. | | 06 03 ; OBJECT_ID (3 Bytes)
13. | | | 55 04 0a
14. | | | ; 2.5.4.10 Organization (O)
15. | | 13 07 ; PRINTABLE_STRING (7 Bytes)
16. | | 54 65 73 74 4f 72 67 ; TestOrg
17. | | ; "TestOrg"
Обратите внимание на следующие моменты:
- Строка 1.
- Имя — это последовательность относительных различающихся имен.
Номер тега для SEQUENCE имеет значение 0x30.
Имя субъекта TestCN.TestOrg требует 35 (0x23) байтов. - Строка 2.
- Общее имя, TestCN, представляет собой единственный набор структур AttributeTypeValue.
Номер тега для SET 0x31. - Строка 3.
- Структура AttributeTypeValue представляет собой последовательность.
Номер тега для типа SEQUENCE имеет значение 0x30.
Для структуры требуется 13 (0xD) байтов. - Строки 4–6:
- Идентификатор объекта (OID) для общего имени — 2.5.4.3.
OID — это три байта OBJECT_ID типа.
Номер тега для типа OBJECT_ID — 0x06. - Строки 7–9:
- Общее имя, TestCN, является строковым значением.
Строка представляет собой шестибайтовый PRINTABLE_STRING тип.
Номер тега для типа PRINTABLE_STRING — 0x13.
Связанные разделы