Emisión inmediata de certificado DV

Al usar la API para pedir sus certificados DV, a menudo, se pasa demasiado tiempo esperando a que se emita el certificado. Si sigue los pasos de esta guía de flujo de trabajo, podrá aprovechar nuestra función de emisión inmediata de certificados DV para que su certificado DV se emita inmediatamente y para reducir sus llamadas API hasta 70 %.

Para pedir certificados DV de Encryption Everywhere, debe seguir estos pasos y configurar una clave de autenticación para su cuenta. Si no lo hace, recibirá un error auth_key_not_setup cuando envíe un pedido.

Descripción general

Para aprovechar la emisión inmediata, debe llevar a cabo estos pasos antes de enviar su pedido de certificado DV:

  1. Cree una clave de autenticación para su cuenta de CertCentral.
  2. Genere una Solicitud de firma del certificado (CSR) para el pedido de certificado DV.
  3. Cree una marca de tiempos para determinar el período de validez del pedido del autentificador.
  4. Construya un autentificador de pedido usando su clave de autenticación y una CSR.
  5. Agregue el autentificador de pedido que se generó al dominio que se protegerá mediante el certificado DV.
  6. Envíe su pedido de certificado DV.

Si llevó a cabo todos estos pasos antes de enviar su pedido de certificado DV, emitiremos de inmediato su certificado DV y se lo devolveremos en el cuerpo de la respuesta. Si se saltea alguno de estos pasos, no se podrá hacer la emisión inmediata.

Paso 1: Crear una clave de autenticación

En primer lugar, debe crear una clave de autenticación para su cuenta de CertCentral. Usará esta clave para generar un autentificador de pedido a fin de demostrar el control del dominio. Puede crear una clave de autenticación con un POST al terminal Crear clave de autenticación.

Un POST exitoso en este terminal devuelve una respuesta HTTP 200 OK. En el cuerpo de la respuesta hay dos datos clave:

  • auth_key_id – Id. única de la clave de autenticación creada.
  • auth_key – Clave de autenticación generada para su cuenta de CertCentral.

Solo puede haber una clave de autenticación para su cuenta de CertCentral. Si su cuenta ya tiene una clave de autenticación, el terminal Crear clave de autenticación devolverá una respuesta HTTP 400 Solicitud errónea con el error auth_key_exists_for_account. Si aparece este error, puede usar el terminal Detalles de clave de autenticación para obtener la clave de autenticación que ya tiene.

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."
    }
  ]
}

Paso 2: Generar una Solicitud de firma del certificado (CSR)

Una vez que tenga la clave de autenticación para su cuenta, el próximo paso es crear una CSR para el pedido certificado. Necesitará una CSR para generar un autentificador de pedido. Vele por generar su CSR en el servidor en que se instalará el certificado.

¿Necesita ayuda para crear una CSR? Vea Crear una CSR (Solicitud de firma de certificado).

Paso 3: Crear una marca de tiempos

Con la marca de tiempos se determina cuándo comienza el período de validez de 30 días del autentificador de pedido. Cuando cree una marca de tiempos, vele por que el período de validez resultante coincida con la fecha en la cual envíe su pedido de certificado DV. Si envía el pedido antes o después del período de validez, no se podrá hacer la emisión inmediata.

Puede crear una marca de tiempos para una fecha futura. Sin embargo, no envíe el pedido de certificado DV antes de esa fecha. Debido a que todavía no es "válido,", el autentificador de pedido no se puede usar para validar el dominio.

Después de determinar cuándo debe comenzar el período de validez del autentificador de pedido, debe darle formato a la marca de tiempos según se muestra abajo:

generic
yyyyMMddhhmmss

Por ejemplo, October 21, 2019 1:30:12 PM se convertirá en 20191021133012.

Paso 4: Generar un autentificador de pedido

Los autentificadores de pedidos tienen una validez de 30 días, según se determina por la información que figura en la marca de tiempos. Cuando genere un autentificador de pedido, vele por que el período de 30 días de la marca de tiempos coincida con la fecha en la cual envía su pedido de certificado.

Ahora que tiene su clave de autenticación, su CSR y la marca de tiempos, está listo para generar un autentificador de pedido que podrá usar para probar el control del dominio. Este autentificador de pedido le deja establecer el registro DNS TXT del dominio o el archivo fileauth.txt antes de presentar un pedido de certificado.

Cómo generar su autentificador de pedido

  1. Construya el secreto que encriptará prefijando la marca de tiempos a su CSR con formato PEM.
  2. Encripte el secreto usando HMAC-SHA256 con su clave de autenticación como clave.
  3. Convierta el cifrado hexadecimal resultante en un valor de cifrado decimal (de base 10).
  4. Convierta el valor de cifrado decimal en un valor de cifrado de base 36.
  5. Vele por que el valor de cifrado de base 36 tenga al menos 50 caracteres de longitud. De no ser así, prefíjelo con ceros (0) hasta que alcance los 50 caracteres de longitud.
  6. Construya el autentificador de pedido definitivo prefijando la marca de tiempos al valor de cifrado de base 36.

Este ejemplo de pseudocódigo muestra cómo seguir esos pasos para generar un autentificador de pedido:

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

Paso 5: Coloque el autentificador de pedido

Para la emisión inmediata de certificado DV, debe colocar el autentificador de pedido en uno de estos lugares antes de pedir el certificado:

  • En el dominio de DNS como registro TXT.
  • En un archivo fileauth.txt en una ubicación predeterminada de su sitio web.

Una vez que el autentificador de pedido esté ubicado, puede enviar su pedido de certificado DV.

DNS TXT

Puede demostrar el control del dominio en su pedido de certificado DV creando un registro DNS TXT en que esté el autentificador de pedido. Una vez que haya creado el registro DNS TXT, puede pedir su certificado DV.

Vele por establecer el valor dcv_method en dns-txt-token cuando use DNS TXT para su autentificador de pedido.

  1. Vaya al sitio de su proveedor de DNS y cree un nuevo registro TXT.

  2. En el campo Valor TXT, pegue el autentificador de pedido.

  3. Dependiendo de su pedido de certificado y del dominio que se protegerá, haga una de estas dos acciones en el campo Alojamiento:

    • Dominio base (por ejemplo, ejemplo.com)
      Déjelo en blanco o escriba el símbolo @ (dependiendo de sus requisitos de DNS).
    • Subdominio
      Escriba el subdominio que será protegido mediante el certificado.
    • Nombre del dominio de autorización
      Escriba _dnsauth.
  4. En el campo de tipo de registro (o equivalente), elija TXT.

  5. Seleccione un valor Período de vida (TTL) o utilice el valor predeterminado de su proveedor de DNS.

  6. Guarde el registro.

  7. Envíe su pedido de certificado DV, y vele por establecer el dcv_method en dns-txt-token.

Autenticación de archivo

Puede demostrar el control del dominio en su pedido de certificado DV alojando un archivo fileauth.txt en que esté el autentificador de pedido en una ubicación predeterminada de su sitio web. Vele por evitar algunos de los errores más frecuentes a la hora de usar Autenticación de archivo.

Una vez que el archivo esté disponible en su sitio web, puede pedir su certificado DV.

Vele por establecer el valor dcv_method en http-token cuando use Autenticación de archivo para su autentificador de pedido.

  1. Abra un editor de texto (como Bloc de notas) y pegue su autentificador de pedido.

  2. Guarde el archivo como fileauth.txt.

  3. Facilite el archivo en su sitio web en esta ubicación (cree directorios según sea necesario):

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

En los servidores Windows, se debe crear la carpeta .well-known a través del Símbolo del sistema: mkdir .well-known

  1. Envíe su pedido de certificado DV, y vele por establecer el dcv_method en http-token.

Paso 6: Enviar el pedido de certificado DV.

Una vez que haya ubicado el autentificador de pedido, estará listo para enviar su solicitud de pedido de certificado DV. Esto se hace con un POST en el terminal Pedido DV SSL.

Un POST exitoso en este terminal devuelve un código de respuesta HTTP 201 creado. Si se cumplen todos los requisitos de la emisión inmediata, se devuelve toda la cadena del certificado en el cuerpo de la respuesta.

Cuando haga su pedido de certificado DV, vele por que el valor dcv_method se corresponda con la ubicación del autentificador de pedido.

Si falta alguno de los requisitos previos, no se hará la emisión inmediata. En vez de recibir toda la cadena del certificado, recibirá la opción típica Cuerpo de respuesta DV SSL del pedido.

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>"
    }
  ]
}