Dogtag CA
Чтобы настроить работу Indeed CM с Dogtag CA:
- Создайте в Dogtag CA сервисную учетную запись для работы с Indeed CM.
- Выпустите сертификат агента регистрации и установите его в личное хранилище сертификатов на сервере Indeed CM.
- Установите корневой сертификат Dogtag CA в хранилище доверенных корневых сертификатов на сервере Indeed CM.
- Создайте шаблоны сертификатов пользователей.
- Настройте подключение к Dogtag CA в Консоли управления Indeed CM.
Создание сервисной учетной записи
Создайте сервисную учетную запись – агента, от имени которого Indeed CM будет отправлять запросы на сертификаты пользователей в Dogtag CA.
- УЦ
- REST API
Создайте пользователя от имени администратора Dogtag CA.
pki -u <имя администратора> -w <пароль администратора> ca-user-add <имя пользователя> --fullName "<отображаемое имя пользователя>"Добавьте пользователя в группу операторов Certificate Manager Agents, чтобы он мог управлять запросами на сертификаты.
pki -u <имя администратора> -w <пароль администратора> ca-group-member-add "Certificate Manager Agents" <имя пользователя>
Выполните вход в Dogtag CA. Для аутентификации используйте сертификат администратора, который находится на сервере Dogtag CA по пути /root/ca-agent.p12.
GET /ca/v2/account/loginСоздайте пользователя.
POST /ca/v2/admin/users{
"id": "<имя пользователя>",
"UserID": "<имя пользователя>",
"FullName": "<отображаемое имя пользователя>"
}Добавьте пользователя в группу операторов Certificate Manager Agents, чтобы он мог управлять запросами на сертификаты.
POST /ca/v2/admin/groups/Certificate Manager Agents/members{
"id": "<имя пользователя>",
"groupID": "Certificate Manager Agents"
}
Выпуск сертификата агента регистрации
Выпустите сертификат агента регистрации для сервисной учетной записи.
- УЦ
- REST API
Подготовьте хранилище для закрытых ключей и сертификатов на сервере Dogtag CA.
pki client-initСгенерируйте ключевую пару и отправьте запрос на сертификат.
pki client-cert-request uid=<имя пользователя>В результате создается запрос со статусом
pending. Сохраните значениеrequestIDиз вывода команды.Одобрите запрос на сертификат от имени администратора Dogtag CA.
pki -u <имя администратора> -w <пароль администратора> ca-cert-request-approve <requestID>Сохраните значение
certIDиз вывода команды.От имени администратора Dogtag CA назначьте полученный сертификат на сервисную учетную запись.
pki -u <имя администратора> -w <пароль администратора> ca-user-cert-add <имя пользователя> --serial <certID>Импортируйте сертификат в локальное хранилище.
pki client-cert-import <имя пользователя> --serial <certID>Экспортируйте сертификат вместе с закрытым ключом в формат PKCS #12.
pki -u <имя администратора> -w <пароль администратора> pkcs12-export --pkcs12-file <путь к файлу P12> --pkcs12-password <пароль от файла P12> "<имя пользователя>"Скопируйте полученный файл с расширением P12 на сервер Indeed CM для последующей установки в хранилище сертификатов.
Требования к сертификату
- Поле Субъект (Subject) сертификата содержит атрибут
uidс именем сервисной учетной записи для работы с Indeed CM. - Поле Улучшенный ключ (Extended Key Usage) сертификата содержит значение «Проверка подлинности клиента» (Client Authentication, 1.3.6.1.5.5.7.3.2).
Выпуск сертификата
Создайте файл конфигурации openssl.conf.
nano openssl.confУкажите следующие параметры для генерации запроса на сертификат (CSR):
CN— имя пользователяemail.1— электронная почта пользователяotherName.1— UPN-имя пользователяdefault_bits— длина ключа шифрования (по умолчанию 2048)Пример файла конфигурации openssl.conf
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[dn]
CN = <имя пользователя>
[req_ext]
subjectAltName = @alt_names
[alt_names]
email.1 = <email пользователя>
otherName.1 = 1.3.6.1.4.1.311.20.2.3;UTF8:<UPN-имя пользователя>
Сгенерируйте закрытый ключ и запрос на сертификат (CSR) с помощью утилиты openssl.
openssl req -new -nodes -out csr.pem -newkey rsa:2048 -keyout key.pem -config openssl.confВыполните вход в Dogtag CA. Для аутентификации используйте сертификат администратора, который находится на сервере Dogtag CA по пути /root/ca-agent.p12.
GET /ca/v2/account/loginОтправьте запрос на выпуск сертификата:
- В поле
cert_requestпередайте содержимое запроса на сертификат (CSR), полученное на шаге 2. - В поле
sn_uidукажите имя сервисной учетной записи.
POST /ca/v2/certrequestsПример запроса
{
"ProfileID": "caUserCert",
"Renewal": false,
"Input": [
{
"id": "i1",
"ClassID": "keyGenInputImpl",
"Name": "Key Generation",
"Attribute": [
{
"name": "cert_request_type",
"Value": "pkcs10"
},
{
"name": "cert_request",
"Value": "<содержимое CSR>"
}
]
},
{
"id": "i2",
"ClassID": "subjectNameInputImpl",
"Name": "Subject Name",
"Attribute": [
{ "name": "sn_uid", "Value": "<имя пользователя>" },
{ "name": "sn_cn", "Value": "" },
{ "name": "sn_o", "Value": "" },
{ "name": "sn_c", "Value": "" }
]
},
{
"id": "i3",
"ClassID": "submitterInfoInputImpl",
"Name": "Requestor Information",
"Attribute": [
{ "name": "requestor_name", "Value": "<имя заявителя>" },
{ "name": "requestor_email", "Value": "" }
]
}
],
"Output": [],
"Attributes": {
"Attribute": []
}
}Скопируйте значение поля
requestIDиз ответа.- В поле
Получите данные запроса на сертификат. Подставьте значение поля
requestID, полученное на шаге 4.GET /ca/v2/agent/certrequests/<requestID>Скопируйте ответ, чтобы одобрить запрос на следующем шаге.
Одобрите запрос на сертификат. Подставьте значение поля
requestID, полученное на шаге 4, и передайте полный ответ, полученный на предыдущем шаге.POST /ca/v2/agent/certrequests/<requestID>/approveПолучите идентификатор выпущенного сертификата.
GET /ca/v2/certrequests/<requestID>Скопируйте значение поля
certIDиз ответа.Получите сертификат в формате Base64.
GET /ca/v2/agent/certs/<certID>Скопируйте значение поля
Encodedиз ответа.Назначьте сертификат на сервисную учетную запись для работы с Indeed CM. В поле
Encodedпередайте строку сертификата, полученную на предыдущем шаге.POST /ca/v2/admin/users/<имя пользователя>/certs{
"Encoded": "-----BEGIN CERTIFICATE-----\n<содержимое сертификата в Base64>\r\n-----END CERTIFICATE-----\n"
}Сохраните сертификат, полученный на шаге 8, в файл cert.pem. Убедитесь, что сертификат содержит корректные данные.
openssl x509 -in cert.pem -noout -textОбъедините сертификат и закрытый ключ в файл PFX. Скопируйте файл на сервер Indeed CM для установки в хранилище сертификатов.
openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem
Установка сертификатов на сервер Indeed CM
Установите на сервер Indeed CM следующие сертификаты:
- Сертификат агента регистрации, полученный на шаге Выпуск сертификата агента регистрации, в локальное хранилище компьютера
- Корневой сертификат Dogtag CA в хранилище доверенных корневых сертификатов компьютера
Чтобы получить корневой сертификат Dogtag CA:
На сервере Dogtag CA выполните команду:
pki ca-cert-export -o <путь к файлу корневого сертификата>Скопируйте полученный файл на сервер Indeed CM.
Создание шаблонов сертификатов пользователей
Подготовьте шаблоны сертификатов для назначений (политик применения), которые будут использоваться для выпуска сертификатов пользователей.
Indeed CM поддерживает работу с шаблонами (профилями) сертификатов Dogtag CA определенной структуры. Примеры подходящих шаблонов: AdminCert, caUserCert, caOtherCert, caServerKeygen_UserCert. Чтобы подготовить шаблоны сертификатов пользователей, отредактируйте шаблоны Dogtag CA.
Далее приведен пример создания шаблона Вход со смарт-картой (Smartcard Logon) на основе шаблона caUserCert.
- УЦ
- REST API
Отключите шаблон, который необходимо отредактировать.
pki -u <имя администратора> -w <пароль администратора> ca-profile-disable caUserCertЭкспортируйте параметры шаблона в файл для редактирования.
pki -u <имя администратора> -w <пароль администратора> ca-profile-show caUserCert --raw --output <путь к файлу>Внесите необходимые изменения в файл параметров шаблона, например, настройте расширения и атрибуты имени субъекта.
Подробнее о настройке шаблонов в документации Dogtag CA
ПримечаниеСертификат Вход со смарт-картой (Smartcard Logon) должен содержать атрибут UPN (User Principal Name) пользователя в расширении Subject Alternative Name (SAN). В шаблоне
caUserCertатрибут UPN по умолчанию отсутствует — добавьте его в настройки SAN.Загрузите отредактированный файл с параметрами шаблона в Dogtag CA.
pki -u <имя администратора> -w <пароль администратора> ca-profile-mod <путь к файлу>Включите шаблон.
pki -u <имя администратора> -w <пароль администратора> ca-profile-enable caUserCert
При настройке шаблонов сертификатов в Консоли управления Indeed CM отображаются только видимые и включенные шаблоны. Убедитесь, что в параметрах шаблона в Dogtag CA параметры visible и enable имеют значение true.
Выполните вход в Dogtag CA. Для аутентификации используйте сертификат администратора, который находится на сервере Dogtag CA по пути /root/ca-agent.p12.
GET /ca/v2/account/loginОтключите шаблон, который необходимо отредактировать.
POST /ca/v2/profiles/caUserCert/disableПолучите параметры шаблона в формате RAW.
GET /ca/v2/profiles/caUserCert/rawВнесите необходимые изменения в параметры шаблона, например, настройте расширения и атрибуты имени субъекта.
Подробнее о настройке шаблонов в документации Dogtag CA
ПримечаниеСертификат Вход со смарт-картой (Smartcard Logon) должен содержать атрибут UPN (User Principal Name) пользователя в расширении Subject Alternative Name (SAN). В шаблоне
caUserCertатрибут UPN по умолчанию отсутствует — добавьте его в настройки SAN.Отправьте обновленные параметры.
POST /ca/v2/profiles/caUserCert/rawВключите шаблон.
POST /ca/v2/profiles/caUserCert/enable
При настройке шаблонов сертификатов в Консоли управления Indeed CM отображаются только видимые и включенные шаблоны. Убедитесь, что в параметрах шаблона в Dogtag CA параметры profileVisible и profileEnable имеют значение true.