Инфраструктура открытых ключей#
В систему Numa Edge входит модуль управления PKI (инфраструктурой открытых ключей), предоставляющий сервисы для использования технологии открытых ключей. Универсальное применение сертификатов обеспечивает стандарт Международного Союза по телекоммуникациям X.509, который является базовым и поддерживается целым рядом протоколов безопасности. В их числе — стандарты шифрования и ЭЦП с открытыми ключами, протокол связи SSL и безопасный протокол передачи гипертекстовых сообщений HTTPS (Secure HTTP). Модуль PKI предназначен для выпуска и управления сертификатами, создания пары ключей (открытый и закрытый) для шифрования данных, управления базой данных инфраструктуры открытых ключей.
Сервисы, предоставляемые модулем PKI могут быть использованы при настройке аутентификации узлов VPN на базе сертификатов X.509, а также при настройке аутентификации пользователей системы Numa Edge.
Сервисы управления PKI реализованы на базе библиотеки OpenSSL.
Сервисы управления предоставляют возможности по созданию сертификата пользователя и его подписание на базе российских криптографических алгоритмов (функции хеширования ГОСТ Р34.11-2012, цифровой подписи — ГОСТ Р34.10-2012 и ГОСТ Р34.10-2001 для обратной совместимости), а также на базе криптосистемы RSA. Цифровые сертификаты соответствуют международным рекомендациям X.509 v3 и могут выдаваться в форматах PKCS12 или PEM.
В процессе управления ключами УЦ имеет возможность отзыва выпущенных им сертификатов, что необходимо для досрочного прекращения их действия, например, в случае компрометации ключа.
Примечание
В связи с ограниченным функционалом УЦ, встроенного в Numa Edge, рекомендуется использовать сторонние УЦ.
Основные компоненты PKI#
Неотъемлемым компонентом инфраструктуры открытых ключей является удостоверяющий центр. Непосредственное использование открытых ключей требует дополнительной их защиты и идентификации для определения связи с секретным ключом. Электронный сертификат представляет собой цифровой документ, который связывает открытый ключ с его владельцем. Для заверения электронного сертификата используется электронная цифровая подпись удостоверяющего центра (УЦ). УЦ включает свое имя в каждый выпущенный им сертификат и подписывает их при помощи собственного секретного ключа. Конечные субъекты идентифицируют сертификаты по имени УЦ, и могут убедиться в их подлинности, используя его открытый ключ. Удостоверяющий центр выполняет следующие основные функции:
- формирует собственный секретный ключ и самоподписанный сертификат;
- выпускает сертификаты сервера и клиентов;
- ведет базу данных всех изданных сертификатов и формирует список аннулированных сертификатов.
Инфраструктура открытых ключей позволяет генерировать пары ключей (открытый ключ/секретный ключ). Генерация ключей может осуществляться централизованно (удостоверяющим центром) или индивидуально (конечным субъектом). В том случае если генерация ключей осуществляется конечными пользователями, они должны иметь соответствующие программные или аппаратные средства для создания надежных ключей. В том случае если пользователь не предъявляет достаточных мер для защиты своих секретных ключей, инфраструктура PKI подвергается серьезному риску.
К преимуществам централизованной генерации можно отнести быстроту создания ключей, использование специализированных средств генерации высококачественных ключей, контроль соответствия алгоритмов генерации установленным стандартам, а также хранение резервных копий на случай их утери пользователями. В том случае если ключи генерируются централизованно, они должны транспортироваться пользователям только через безопасные каналы связи. В том случае если секретный ключ пользователя потерян, похищен или скомпрометирован, или если есть вероятность наступления таких событий, действие сертификата должно быть прекращено.
Формат сертификата определен в рекомендациях Международного союза по телекоммуникациям ITU (X.509), в настоящее время основным используемым форматом является формат версии 3. Сертификат представляет собой структурированную двоичную запись, содержащую элементы данных, сопровождаемые цифровой подписью издателя сертификата. В сертификате имеется десять основных полей: шесть обязательных и четыре опциональных. К обязательным полям относятся:
- идентификатор алгоритма подписи Signature Algorithm Identifier;
- имя издателя Issuer Name;
- период действия Validity (Not before / After);
- открытый ключ субъекта Subject Public Key Information;
- имя субъекта сертификата Subject Name.
В данном случае под субъектом понимается сторона, контролирующая секретный ключ, соответствующий данному открытому ключу. Поле Version задает синтаксис сертификата. Удостоверяющий центр, выпускающий сертификат, присваивает каждому сертификату серийный номер Certificate Serial Number, который должен быть уникален.
В поле Signature Algorithm Identifier указывается идентификатор алгоритма ЭЦП, который был использован для защиты сертификата. В поле Validity (Not Before/After) указываются даты начала и окончания периода действия сертификата.
Каждый раз при использовании сертификата проверяется, является ли сертификат действующим. Сертификаты, срок действия которых истек, должны аннулироваться удостоверяющим центром.
Особенности реализации PKI#
Ограничения, предъявляемые к содержимому сертификатов.#
Ввиду особенностей реализации подсистемы PKI, а так же возможности неоднозначной трактовки RFC 5280, не гарантируется поддержка следующих сертификатов:
- Сертификаты с пустым полем subject.
- Различные сертификаты с одинаковым полем subject.
- Сертификаты с отсутствующим полем Common Name.
Организация хранения сертификатов#
В Numa Edge все сертификаты УЦ и конечные сертификаты хранятся в одной директории. В связи с этим накладываются определенные ограничения на именование сертификатов.
С точки зрения системы конфигурирования, имена сертификатов в файловой системе представляют собой имена узлов ca <имя>
и certificate <имя_сертификата>
.
В конфигурационном режиме накладываемые ограничения выражаются в невозможности указать одинаковые имена для узлов УЦ или конечных сертификатов. В таком случае для сертификата УЦ выполняемые действия будут рассматриваться как попытка изменить существующий сертификат, что запрещено, а для конечного сертификата (например, в рамках соседнего УЦ) будет выдано соответствующее предупреждение на стадии commit вида:
При импорте сертификатов также следует учитывать существующие ограничения. При попытке импорта сертификата УЦ, с именем, идентичным уже имеющемуся в системе, будет выдано предупреждение вида:
Примечание
С конечными сертификатами подобное ограничение для операции импорта отсутствует. Таким образом, можно заменить конечный сертификат в рамках уже имеющегося другого или того же УЦ, в случае совпадения их имён. Следует обращать внимание на эту особенность перед выполнением импорта сертификатов.
Совместимость реализации PKI#
При экспорте ключей из Numa Edge в сторонние устройства могут возникнуть проблемы совместимости. Например, если есть сервер OpenLDAP, собранный с поддержкой библиотеки GnuTLS (а не OpenSSL), то при экспортировании созданного на Numa Edge сертификата и использовании его в качестве сертификата сервера, сервер OpenLDAP не будет запущен и будет получено следующее сообщение об ошибке:
Данная ситуация обусловлена тем, что секретный ключ при генерации сертификата на Numa Edge создается в формате PKCS#8, который не поддерживается сервером OpenLDAP, собранным с поддержкой GnuTLS. Для конвертации секретного ключа в традиционный формат необходимо воспользоваться следующей командой:
Пример настройки PKI#
В этом наборе примеров приведено создание инфраструктуры открытых ключей в системе Numa Edge, генерация сертификатов, экспорт/импорт сертификатов. В данном наборе примеров используются две системы Numa Edge, имеющие имена edge1 и edge2 соответственно.
Создание удостоверяющего центра#
В данном примере будет приведено создание удостоверяющего центра, который будет использован для управления сертификатами стандарта X.509. В данном примере удостоверяющий центр создается на узле edge1. На базе созданного удостоверяющего центра будет осуществляться централизованное создание и управление ключевыми парами и сертификатами узлов edge1 и edge2. Для создания нового удостоверяющего центра необходимо выполнить следующие шаги на узле edge1 в режиме настройки:
Пример – Создание удостоверяющего центра на узле edge1#
-
Создание удостоверяющего центра
-
Указание общего имени (common name) удостоверяющего центра
-
Указание города, в качестве одного из атрибутов идентификатора УЦ
- Указание страны, в качестве одного из атрибутов идентификатора УЦ
- Указание периода действия сертификата удостоверяющего центра
- Фиксация настройки
- Вывод настройки
Генерация сертификата узла edge1#
В данном примере будет приведено создание сертификата узла edge1.
Для создания сертификата узла edge1 необходимо выполнить следующие шаги на узле edge1 в режиме настройки:
Пример – Создание сертификата узла edge1#
- Создание сертификата для узла edge1
- Указание общего имени (common name), которое будет указано в сертификате узла edge1
- Указание срока действия сертифката. Срок действия выпускаемого сертификата не должен превышать срок сдейтсвия сертификата УЦ
- Фиксация настройки
- Вывод настройки созданного сертификата
Генерация сертификата узла edge2#
В данном примере будет приведено создание сертификата узла edge2.
Для создания сертификата узла edge2 необходимо выполнить следующие шаги на узле edge1 в режиме настройки:
Пример – Создание сертификата узла edge2#
- Создание сертификата для узла edge2
- Указание общего имени (common name), которое будет указано в сертификате узла edge2
- Указание срока действия сертифката. Срок действия выпускаемого сертификата не должен превышать срок сдейтсвия сертификата УЦ
- Фиксация настройки
- Вывод настройки созданного сертификата
Экспорт сертификата узла edge2#
В данном примере приведен экспорт сертификата узла edge2 на флэш-накопитель. При выполнении команды pki export certificate <имя_сертификата>
к устройству должен быть подключен флэш-накопитель. Монтирование и размонтирование флэш-накопителя осуществляется автоматически. Экспортируемые файлы будут помещены в корневую директорию флэш-накопителя. К экспортируемым файлам относятся: сертификат удостоверяющего центра, сертификат клиента, подписанный указанным удостоверяющим центром, секретный ключ клиента и файл, содержащий список аннулированных сертификатов.
Примечание
При использовании команды pki export certificate <имя_сертификата>
экспортируется секретный ключ, связанный с открытым ключом, указанным в сертификате. Секретный ключ должен храниться в тайне, и не должен передаваться третьим лицам.
Для экспортирования сертификата узла edge2 на флэш-накопитель необходимо выполнить следующие шаги на узле edge1 в эксплуатационном режиме, к устройству должен быть заранее подключен флэш-накопитель.
Пример – Экспортирование сертификата узла edge2#
Действие | Команда |
---|---|
Экспортирование сертификата узла edge2, секретного ключа узла edge2, сертификата удостоверяющего центра | admin@edge1:~$ pki export certificate |
После осуществления экспорта в корневой директории флэш-накопителя будут содержаться следующие файлы:
- MainCA.crt: сертификат удостоверяющего центра;
- edge1-cert.crt: сертификат узла edge2;
- MainCA.crl: список отозванных сертификатов;
- edge2-cert.key: секретный ключ узла edge2.
Импорт сертификата узла edge2#
В данном примере приведен импорт сертификата узла edge2 с флэш-накопителя. При выполнении команды pki import
к устройству должен быть подключен флэш-накопитель, в корне которого должны размещаться следующие файлы:
- сертификат удостоверяющего центра;
- сертификат узла edge2;
- список отозванных сертификатов;
- секретный ключ узла edge2.
Монтирование и размонтирование флэш-накопителя осуществляется автоматически. В результате выполнения указанной команды в систему на узле edge2 будут добавлены сертификат удостоверяющего центра, сертификат узла edge2, подписанный указанным удостоверяющим центром, секретный ключ, а также файл, содержащий список аннулированных сертификатов.
Для импорта сертификата узла edge2 необходимо выполнить следующие шаги на узле edge2 в эксплуатационном режиме, к устройству должен быть заранее подключен флэш-накопитель:
Пример – Импорт сертификата узла edge2#
- Импорт сертификата узла edge2, секретного ключа узла edge2, сертификата удостоверяющего центра, списка отозванных сертификатов
- Вывод секции pki в режиме конфигурирования