Идентификация сертификата
Для идентификации конкретных сертификатов используется структура данных CertId.
Открытый ключ корневого СА, полученный внешним способом
Каждый корневой СА должен иметь возможность опубликовать свой текущий открытый ключ посредством некоторых "внешних" механизмов. Хотя такие механизмы находятся вне рассматриваемой предметной области, мы определим структуры данных, которые могут ими поддерживаться.
Доступны два общих метода: либо СА непосредственно публикует свой самоподписанный сертификат, либо данная информация доступна через Директорию (или ее эквивалент) и СА публикует хэш данного значения, позволяя тем самым перед использованием проверить целостность его сертификата.
OOBCert ::= Certificate
Поля в данном сертификате имеют следующие ограничения:
- Сертификат должен быть самоподписанным (т.е. подпись должна проверяться с использованием поля SubjectPublicKeyInfo);
- Поля subject и issuer должны быть идентичны;
- Если поле subject является NULL, то оба расширения, subjectAltName и issuerAltName, должны присутствовать и иметь одно и то же значение;
- Значения всех других расширений должны соответствовать самоподписанному сертификату (т.е. идентификаторы ключа для subject и issuer должны быть одни и те же).
OOBCertHash ::= SEQUENCE { hashAlg [0] AlgorithmIdentifier OPTIONAL, certId [1] CertId OPTIONAL, hashVal BIT STRING -- hashVal вычисляется для -- самоподписанного -- сертификата с идентификатором -- certID.}
Смысл значения хэша состоит в том, чтобы любой, кто безопасно получил значение хэша (внешними способами), мог проверить самоподписанный сертификат данного СА.