Page tree

Выпустите сертификат агента регистрации для сервисной учетной записи.

Создать учетную запись можно через УЦ или REST API.

УЦ

  1. Подготовьте хранилище для закрытых ключей и сертификатов на сервере Dogtag CA.
    pki client-init

  2. Сгенерируйте ключевую пару и отправьте запрос на сертификат.
    pki client-cert-request uid=<имя пользователя>
    В результате создается запрос со статусом pending. Сохраните значение requestID из вывода команды.
  3. Одобрите запрос на сертификат от имени администратора Dogtag CA.
    pki -u <имя администратора> -w <пароль администратора> ca-cert-request-approve <requestID>
    Сохраните значение certID из вывода команды.
  4. От имени администратора Dogtag CA назначьте полученный сертификат на сервисную учетную запись.
    pki -u <имя администратора> -w <пароль администратора> ca-user-cert-add <имя пользователя> --serial <certID>
  5. Импортируйте сертификат в локальное хранилище.
    pki client-cert-import <имя пользователя> --serial <certID>
  6. Экспортируйте сертификат вместе с закрытым ключом в формат PKCS #12.
    pki -u <имя администратора> -w <пароль администратора> pkcs12-export --pkcs12-file <путь к файлу P12> --pkcs12-password <пароль от файла P12> "<имя пользователя>"
  7. Скопируйте полученный файл с расширением P12 на сервер Indeed CM для последующей установки в хранилище сертификатов.

REST API

Требования к сертификату

  • Поле Субъект (Subject) сертификата содержит атрибут uid с именем сервисной учетной записи для работы с Рутокен KeyBox.
  • Поле Улучшенный ключ (Extended Key Usage) сертификата содержит значение «Проверка подлинности клиента» (Client Authentication, 1.3.6.1.5.5.7.3.2).

Выпуск сертификата

  1. Создайте файл конфигурации openssl.conf.
    nano openssl.conf
  2. Укажите следующие параметры для генерации запроса на сертификат (CSR):

    • CN — имя пользователя;

    • email.1 — электронная почта пользователя;

    • otherName.1 — UPN-имя пользователя;

    • default_bits — длина ключа шифрования (по умолчанию 2048).

      [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-имя пользователя>


  3. Сгенерируйте закрытый ключ и запрос на сертификат (CSR) с помощью утилиты openssl.
    openssl req -new -nodes -out csr.pem -newkey rsa:2048 -keyout key.pem -config openssl.conf
  4. Выполните вход в Dogtag CA. Для аутентификации используйте сертификат администратора, который находится на сервере Dogtag CA по пути /root/ca-agent.p12.

    GET /ca/v2/account/login
  5. Отправьте запрос на выпуск сертификата:

    1. В поле cert_request передайте содержимое запроса на сертификат (CSR), полученное на шаге 2.
    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 из ответа.
  6. Получите данные запроса на сертификат. Подставьте значение поля requestID, полученное на шаге 4.
    GET /ca/v2/agent/certrequests/<requestID>
    Скопируйте ответ, чтобы одобрить запрос на следующем шаге.
  7. Одобрите запрос на сертификат. Подставьте значение поля requestID, полученное на шаге 4, и передайте полный ответ, полученный на предыдущем шаге.
    POST /ca/v2/agent/certrequests/<requestID>/approve
  8. Получите идентификатор выпущенного сертификата.
    GET /ca/v2/certrequests/<requestID>
    Скопируйте значение поля certID из ответа.
  9. Получите сертификат в формате Base64.
    GET /ca/v2/agent/certs/<certID>
    Скопируйте значение поля Encoded из ответа.
  10. Назначьте сертификат на сервисную учетную запись для работы с Рутокен KeyBox. В поле Encoded передайте строку сертификата, полученную на предыдущем шаге.
    POST /ca/v2/admin/users/<имя пользователя>/certs
    {
        "Encoded": "-----BEGIN CERTIFICATE-----\n<содержимое сертификата в Base64>\r\n-----END CERTIFICATE-----\n"
    }
  11. Сохраните сертификат, полученный на шаге 8, в файл cert.pem. Убедитесь, что сертификат содержит корректные данные.
    openssl x509 -in cert.pem -noout -text
  12. Объедините сертификат и закрытый ключ в файл PFX. Скопируйте файл на сервер Indeed CM для установки в хранилище сертификатов.
    openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem
  • No labels