Немедленная выдача сертификата DV

При использовании API для заказа ваших DV сертификатов слишком часто тратится время на ожидание выдачи сертификата. Выполнив действия, описание которых содержится в настоящем руководстве по рабочему процессу, вы сможете воспользоваться нашей функцией немедленной выдачи сертификата DV, которая позволит вам немедленно получить свой сертификат DV и сократить количество API-вызовов до 70%.

Для запроса сертификатов Encryption Everywhere DV необходимо выполнить эти шаги и сконфигурировать ключ авторизации AuthKey для своей учетной записи. Если вы не сделали этого, вы получите сообщение об ошибке auth_key_not_setup при подаче запроса.

Обзор

Для использования возможности немедленной выдачи вам необходимо выполнить эти шаги, прежде чем подавать запрос на сертификат DV:

  1. Создайте ключ авторизации AuthKey для своей учетной записи CertCentral.
  2. Сгенерируйте запрос на подпись сертификата (CSR) для заказа на сертификат DV.
  3. Создайте временную метку, чтобы задать период действия токена запроса.
  4. Создайте токен запроса с помощью ключ авторизации AuthKey и запроса на подпись сертификата (CSR).
  5. Добавьте сгенерированный токен запроса к домену, который необходимо защитить с помощью DV-сертификата.
  6. Отправить заказ на DV-сертификат

Если все эти шаги выполнены при подаче вами заказа на DV-сертификат, мы немедленно выдадим вам DV-сертификат и перешлем его в теле ответа. Если какой-либо из этих шагов пропущен, немедленная выдача будет невозможна.

Шаг 1: Создание ключа авторизации AuthKey

Сначала вам необходимо создать ключ авторизации AuthKey для своей учетной записи CertCentral. Вы будете использовать этот ключ для генерирования токена запроса для предоставления контроля над доменом. Вы можете создать ключ авторизации AuthKey с помощью команды POST для конечной точки Создать AuthKey.

Успешное выполнение команды POST для данной конечной точки приведет к появлению HTTP-ответа 200 ОК. В теле ответа содержатся два информационных компонента ключа:

  • auth_key_id – идентификатор созданного ключа авторизации AuthKey.
  • auth_key – создайте ключ авторизации AuthKey для своей учетной записи CertCentral.

Только один ключ авторизации AuthKey может существовать для вашей учетной записи CertCentral. Если у вашей учетной записи уже есть ключ авторизации AuthKey, конечная точка Создать AuthKey возвращает ответ HTTP 400 Bad Request (Неверный запрос) с ошибкой auth_key_exists_for_account. В случае появления у вас этой ошибки вы можете использовать конечную точку Подробности AuthKey для получения своего существующего ключа авторизации AuthKey.

cURL
curl -X POST \
  https://www.digicert.com/services/v2/account/auth-key \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}'
200 OK
{
  "auth_key_id": "{{auth_key_id}}",
  "auth_key": "{{auth_key}}"
}
400 Bad Request
{
  "errors": [
    {
      "code": "auth_key_exists_for_account",
      "message": "An error occurred while processing your request."
    }
  ]
}

Шаг 2: Создание запроса на подпись сертификата (Certificate Signing Request, CSR)

После получения ключа авторизации AuthKey для своей учетной записи следующий шаг — создание заказа на сертификат. Вам будет необходим CSR для генерирования токена запроса. Сгенерируйте свой запрос на подпись сертификата (CSR) на сервере, где будет установлен сертификат.

Требуется помощь при создании запроса на подпись сертификата? См. Создать запрос на подпись сертификата (CSR).

Шаг 3: Создание временной метки

Временная метка определяет, когда начинается 30-дневный период действия токена запроса. При создании временной метки убедитесь в том, что результирующее окно срока действия совпадает с временем подачи вами заказа на DV-сертификат. Если ваш заказ отправлен до или после окна срок действия, немедленная выдача будет невозможна.

Вы можете создать временную метку для даты в будущем. Тем не менее, не отправляйте заказ на DV-сертификат до этой даты. Потому что токен запроса пока что не "действует", он не может быть использован для проверки домена.

После определения времени начала действия токена запроса вам необходимо отформатировать временную метку, как показано ниже:

generic
yyyyMMddhhmmss

Например, October 21, 2019 1:30:12 PM будет выглядеть как 20191021133012.

Шаг 4: Создание токена запроса

Срок действия токенов запросов составляет 30 дней. Он определяется данными во временной метке. При генерировании токена запроса убедитесь в том, что 30-дневное окно временной метки совпадает с временем подачи вами заказа на сертификат.

Теперь, когда у вас есть ключ авторизации AuthKey, запрос на подпись сертификата CSR и временная метка, вы готовы к генерированию токена запроса, который будет использоваться для подтверждения контроля над доменом. Этот токен запроса позволяет вам настраивать запись DNS TXT вашего домена или файл fileauth.txt, прежде чем размещать заказ на сертификат.

Порядок генерирования токена запроса

  1. Создайте секрет для хэширования путем добавления временной метки к началу вашего запроса на подпись сертификата (CSR) в формате PEM.
  2. Хэшируйте секрет с помощью HMAC-SHA256, используя в качестве ключа свой ключ авторизации AuthKey.
  3. Преобразуйте результирующий шестнадцатеричный хэш в десятичное (base10) хэш-значение.
  4. Преобразуйте десятичное хэш-значение в хэш-значение base36.
  5. Длина хэш-значения base36 не должна превышать 50 символов. Если не выполнить это условие, добавьте в начале нули (0), чтобы получить 50 символов.
  6. Создайте финальный токен запроса путем добавления временной метки в начале хэш-значения base36.

Этот пример псевдокода показывает порядок использования приведенных выше шагов для генерирования токена запроса:

generic
# Declare AuthKey, CSR, and timestamp
auth_key = 'certcentral_account_auth_key'
csr = 'pem_formatted_csr'
timestamp = 'yyyyMMddhhmmss'

# Construct secret to be hashed
secret = timestamp + csr

# Hash secret using HMAC-SHA256 and auth_key
hash = hmac.sha256(secret, auth_key)

# Convert hexadecimal hash to decimal
decimal_hash = convertToBase10(hash)

# Convert decimal_hash to base36
base36_hash = convertToBase36(decimal_hash)

# If base36_hash length is < 50, prepend with zeros
valid_hash = base36_hash.padStart(50, '0')

# Construct final request token
request_token = timestamp + valid_hash

Шаг 5: Размещение токена запроса

Для немедленной выдачи DV-сертификата вам необходимо поместить токен запроса в одно из этих мест до подачи запроса на сертификат:

  • В DNS домена в виде TXT-записи.
  • В файл fileauth.txt в предварительно заданном месте на вашем веб-сайте.

После размещения токена запроса вы можете отправить свой заказ на DV-сертификат.

DNS TXT

Вы можете подтвердить контроль над доменом в своем заказе на DV-сертификат путем создания записи DNS TXT, содержащей токен запроса. После создания записи DNS TXT вы можете запрашивать свой DV-сертификат.

Не забудьте установить значение dcv_method на dns-txt-token при использовании DNS TXT для своего токена запроса.

  1. Перейдите на сайт вашего провайдера DNS и создайте новую запись TXT.

  2. В поле Значение TXT вставьте токен запроса.

  3. В зависимости от своего заказа на сертификат и домена, который нужно защитить, выполните одно из следующих действий для поля Хост:

    • Базовый домен (например, example.com)
      Оставьте пустым или введите символ @ (зависит от требований вашего DNS).
    • Субдомен
      Укажите субдомен, который необходимо защитить с помощью сертификата.
    • Имя домена авторизации
      Введите _dnsauth.
  4. В поле типа записи (или в другом аналогичном поле) выберите TXT.

  5. Выберите значение времени жизни (TTL) либо используйте значение по умолчанию, установленное вашим провайдером DNS.

  6. Сохраните запись.

  7. Отправьте свой заказ на DV-сертификат, не забыв установить при этом dcv_method на dns-txt-token.

Файл аутентификации

Вы можете подтвердить контроль над доменом в своем заказе на DV-сертификат путем размещения файла fileauth.txt, содержащего токен запроса в предварительно указанном месте на своем веб-сайте. Примите меры по предотвращению некоторых стандартных ошибок при использовании файла аутентификации.

После появления файла на вашем веб-сайте вы можете запрашивать свой DV-сертификат.

Не забудьте установить значение dcv_method на http-token при использовании файла аутентификации для своего токена запроса.

  1. Откройте текстовый редактор (например, Notepad) и вставьте токен запроса.

  2. Сохраните файл как fileauth.txt.

  3. Откройте доступ к файлу на своем веб-сайте в этом месте (создайте директории согласно необходимости):

    http://[domain.name]/.well-known/pki-validation/fileauth.txt

Для серверов, работающих под управлением Windows, папку .well-known необходимо создать с помощью командной строки: mkdir .well-known

  1. Отправьте свой заказ на DV-сертификат, не забыв установить при этом dcv_method на http-token.

Шаг 6: Направление заказа на сертификат DV

После размещения токена запроса вы готовы к отправке запроса на выдачу DV-сертификата. Это осуществляется с помощью команды POST для конечной точки заказа SSL DV.

Успешное выполнение команды POST для данной конечной приведет к отображению кода HTTP-ответа 201 Создан. Если все требования для немедленной выдачи выполнены, полная цепочка сертификатов возвращается в теле ответа.

При размещении заказа на DV-сертификат убедитесь в том, что значение dcv_method соответствует положению токена запроса.

Если какое-либо из этих предварительных условий отсутствует, немедленная выдача отменяется. Вместо получения полной цепочки сертификатов вы получите Тело ответа «Заказать DV SSL».

cURL (DNS TXT)
curl -X POST \
  'https://www.digicert.com/services/v2/order/certificate/{{dv_ssl_certificate_id}}' \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}' \
  -d '{
    "certificate": {
        "common_name": "example.com",
        "csr": "<csr>",
        "server_platform": {
            "id": 2
        }
    },
    "validity_years": 1,
    "dcv_method": "dns-txt-token"
}'
cURL (File Auth)
curl -X POST \
  'https://www.digicert.com/services/v2/order/certificate/{{dv_ssl_certificate_id}}' \
  -H 'Content-Type: application/json' \
  -H 'X-DC-DEVKEY: {{api_key}}' \
  -d '{
    "certificate": {
        "common_name": "example.com",
        "csr": "<csr>",
        "server_platform": {
            "id": 2
        }
    },
    "validity_years": 1,
    "dcv_method": "http-token"
}'
201 Created
{
  "id": 112339,
  "certificate_id": 132345,
  "certificate_chain": [
    {
      "subject_common_name": "example.com",
      "pem": "<pem_certificate>"
    },
    {
      "subject_common_name": "DigiCert SHA2 Secure Server CA",
      "pem": "<pem_certificate>"
    },
    {
      "subject_common_name": "DigiCert Global Root CA",
      "pem": "<pem_certificate>"
    }
  ]
}