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 <путь к файлу>Внесите необходимые изменения в файл параметров шаблона, например, настройте расширения и атрибуты имени субъекта.
ПримечаниеСертификат Вход со смарт-картой (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Внесите необходимые изменения в параметры шаблона, например, настройте расширения и атрибуты имени субъекта.
ПримечаниеСертификат Вход со смарт-картой (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.