6.1. Поддержка протокола SCEP
eCA-RA реализует серверный компонент по протоколу SCEP[1] (далее SCEP-сервер eCA-RA). SCEP-сервер eCA-RA поддерживает возможность подключения к нему клиентов по протоколам HTTP и HTTPS.
Доступ клиентов к SCEP-серверу eCA-RA осуществляется в контексте SCEP-профилей Центров сертификации подключённого eCA-CA (см. раздел Вкладка “SCEP”). Чтобы Центр сертификации подключённого eCA-CA, мог быть использован в качестве издателя сертификатов по протоколу SCEP, необходимо для него создать SCEP-профиль.
При создании SCEP-профиля eCA-RA выполняет следующие действия:
-
автоматически генерирует и назначает создаваемому профилю идентификатор в формате UUID;
-
выпускает на Центре сертификации сертификат с закрытым ключом (PKCS#12) по шаблону “SCEP Management” (технологический сертификат SCEP-профиля), при этом:
-
сертификат не привязан к какому-либо субъекту;
-
имеет в поле “CN” значение “Технологический сертификат SCEP-профиля ID={profileId}”, где profileId - идентификатор созданного SCEP-профиля;
-
алгоритм и длина ключа у сертификата соответствуют алгоритму и длине ключа Центра сертификации, на котором осуществляется выпуск;
-
пароль от создаваемого контейнера автоматически формирует eCA-RA и записывает его в свою базу данных в зашифрованном виде.
-
-
экспортирует созданный контейнер закрытого ключа и сохранять его в своей базе данных.
В дальнейшем технологический сертификат SCEP-профиля используется в обработке запросов по протоколу SCEP (cм. раздел Обработка запросов по протоколу SCEP).
Настройка SCEP-сервера
Заголовок раздела «Настройка SCEP-сервера»Для настройки SCEP-сервера eCA-RA выполните следующие шаги:
-
В разделе “Управление” на вкладке “SCEP” создайте SCEP-политики (см. раздел Создание SCEP-политики). SCEP-политика представляет собой совокупность “ChallengePassword + Шаблон” и служит для управления шаблонами, которые используются в рамках реализации сценария выпуска сертификата по протоколу SCEP.
-
В разделе “Управление” на вкладке “SCEP” создайте новый SCEP-профиль (см. раздел Создание SCEP-профиля). При его создании задайте Центр сертификации подключённого eCA-CA и алгоритм шифрования ответов SCEP-сервера.
После этого будет доступен соответствующий SCEP-сервер, доступный по адресу PROTOCOL://<HOSTNAME>/scep-service/profiles/{profileId}/engine (про получение URL SCEP-сервера eCA-RA см. раздел Редактирование SCEP-профиля), где:
-
PROTOCOL- протокол, по которому осуществляется подключение (httpилиhttps) Возможность подключения по http определяется параметромallow_scep_httpконфигурационного файла; -
HOSTNAME- адрес сервера eCA-RA; -
profileId- идентификатор существующего SCEP-профиля. -
Далее URL созданного SCEP-профиля следует использовать при добавлении конфигурации SCEP-сервера. Получить URL можно с помощью функции копирования URL адреса SCEP-профиля - см. раздел Редактирование SCEP-профиля. Пример команды certmonger [2] для добавления SCEP-сервера[3]:
getcert add-scep-ca -c CA_Name -u SCEP_URLДля проверки следует использовать команду с правами суперпользователя:
getcert list-cas -c NameОбработка запросов по протоколу SCEP
Заголовок раздела «Обработка запросов по протоколу SCEP»eCA-RA реализовывает обработку следующих запросов клиента по протоколу SCEP[4]:
-
PKCSReq;
-
CertPoll;
-
RenewalReq;
-
GetCert;
-
GetCRL;
-
GetCACert;
-
GetCACaps.
Обработка запроса клиента PKCSReq/RenewalReq
Заголовок раздела «Обработка запроса клиента PKCSReq/RenewalReq»eCA-RA по серийному номеру сертификата клиента (присутствует в составе сообщения формата PKCS#7) и идентификатору Центра сертификации (определяется автоматически на основании связи используемого клиентом SCEP-профиля и Центра сертификации) осуществляет поиск заявки на данный сертификат клиента в своей базе данных среди выполненных заявок (заявка должна иметь статус “Выполнена”). Далее в зависимости от результатов поиска заявки выполняется один из следующих сценариев:
-
Если выполненная заявка на данный сертификат клиента найдена, eCA-RA создаёт новую заявку на основании запроса на сертификат из состава расшифрованного сообщения. Заявка создаётся для субъекта и по шаблону, указанному в найденной заявке. Выпуск сертификата по созданной заявке осуществляется на Центре сертификации Aladdin eСA, ассоциированном с используемым пользователем SCEP-профилем.
-
Если по созданной заявке успешно выпущен сертификат, eCA-RA в ответном сообщении возвращает клиенту выпущенный сертификат (SUCCES).
-
Если созданная заявка ожидает подтверждения или по ней произошла ошибка выпуска, eCA-RA возвращает клиенту сообщение о том, что заявка находится в обработке (PENDING).
-
Если заявка не была создана или созданная заявка отклонена, eCA-RA возвращает клиенту сообщение об отклонении запроса (FAILURE).
-
-
Если выполненная заявка на данный сертификат клиента не найдена, eCA-RA создаёт новую заявку на основании запроса на сертификат из состава расшифрованного сообщения. Шаблон, который используется при создании заявки, определяется на основании SCEP-политик по значению ChallengePassword, указанному в запросе на сертификат. Выпуск сертификата по созданной заявке осуществляется на Центре сертификации, ассоциированном с используемым пользователем SCEP-профилем.
-
Если в запросе на сертификат не указан ChallengePassword, и среди SCEP-политик отсутствует политика на “пустой” ChallengePassword, eCA-RA возвращает клиенту сообщение об отклонении запроса (FAILURE).
-
Если по созданной заявке успешно выпущен сертификат, eCA-RA в ответном сообщении возвращает клиенту выпущенный сертификат (SUCCES).
-
Если созданная заявка ожидает подтверждения или по ней произошла ошибка выпуска, eCA-RA возвращает клиенту сообщение о том, что заявка находится в обработке (PENDING).
-
Если заявка не была создана или созданная заявка отклонена, eCA-RA возвращает клиенту сообщение об отклонении запроса (FAILURE).
-
eCA-RA записывает в свою базу данных “TransactionId” для каждой заявки, созданной в ходе обработки запросов “PKCSReq/RenewalReq”.
Обработка запроса клиента CertPoll
Заголовок раздела «Обработка запроса клиента CertPoll»eCA-RA осуществляет поиск в свой базе данных заявки, у которой “TransactionId” соответствует указанному в сообщении, и определять ее статус.
-
Если по найденной заявке успешно выпущен сертификат, eCA-RA в ответном сообщении возвращает клиенту выпущенный сертификат по данной заявке (SUCCES).
-
Если данная заявка ожидает подтверждения или по ней произошла ошибка выпуска, eCA-RA возвращает клиенту сообщение о том, что заявка находится в обработке (PENDING).
-
Если данная заявка отклонена или не была найдена, eCA-RA должен возвращать клиенту сообщение об ошибке (FAILURE).
Обработка запроса клиента GetCert
Заголовок раздела «Обработка запроса клиента GetCert»eCA-RA осуществляет поиск в свой базе данных заявки, по которой выпущенный сертификат имеет серийный номер, соответствующий указанному в сообщении серийному номеру. Поиск осуществляется только среди заявок, сертификат по которым выпущен eCA-CA, SCEP-профиль которого используется клиентом.
Если такая заявка найдена, eCA-RA в ответном сообщении возвращает клиенту выпущенный по данной заявке сертификат (SUCCES), иначе - сообщение об ошибке (FAILURE).
Обработка запроса клиента GetCRL
Заголовок раздела «Обработка запроса клиента GetCRL»eCA-RA в ответном сообщении возвращает CRL eCA-CA, SCEP-профиль которого используется клиентом.
Обработка запроса клиента GetCACert
Заголовок раздела «Обработка запроса клиента GetCACert»eCA-RA в ответном сообщении возвращает цепочку сертификатов технологического сертификата SCEP-профиля, используемого клиентом.
Обработка запроса клиента GetCACaps
Заголовок раздела «Обработка запроса клиента GetCACaps»eCA-RA возвращает клиенту сообщение формата “CA Capabilities Response” в соответствии с RFC8894, перечисляющее следующие возможности SCEP-сервера:
-
AES;
-
DES3;
-
POSTPKIOperation;
-
Renewal;
-
SHA-1;
-
SHA-256;
-
SHA-512;
-
SCEPStandart.
[1]. Протокол SCEP описан в RFC8894, см.: https://datatracker.ietf.org/doc/html/rfc8894 ↑
[2]. Certmonger --- это служба, которая управляет сертификатами и их жизненным циклом в системах Linux. ↑
[3]. Для выполнения команд ниже необходимо, чтобы был установлен пакет certmonger. ↑
[4]. Запрос “GetNextCACert” на данный момент не поддерживается SCEP-сервером eCA-RA ↑

