Emissão imediata de certificados DV

Ao usar a API para pedir seus certificados DV, muito geralmente tempo é gasto apenas esperando a emissão do certificado. Ao seguir as etapas neste guia de fluxo de trabalho, você poderá tirar vantagem do nosso recurso de emissão imediata do certificado DV, permitindo a emissão imediata do seu certificado DV e redução das suas chamadas de API em até 70%.

Para solicitar certificados Encryption Everywhere DV, você deve seguir estas etapas e configurar uma AuthKey para a sua conta. Caso contrário, você receberá um erro auth_key_not_setup ao enviar uma solicitação.

Visão geral

Para tirar vantagem da emissão imediata, é necessário completar estas etapas antes de enviar o seu pedido de certificado DV:

  1. Crie uma AuthKey para a sua conta da CertCentral.
  2. Gere uma solicitação de assinatura de certificado (CSR) para o pedido de certificado DV.
  3. Crie um carimbo de data e hora para determinar o período de validade do token da solicitação.
  4. Construa um token da solicitação usando a sua AuthKey e CSR.
  5. Adicione o token da solicitação gerado ao domínio a ser protegido pelo certificado DV.
  6. Envie seu pedido de certificado DV.

Se todas estas etapas estiverem concluídas ao enviar o seu pedido de certificado DV, nós imediatamente enviaremos o seu certificado DV e o devolveremos no corpo da resposta. Se qualquer uma destas etapas forem puladas, a emissão imediata não poderá acontecer.

Etapa 1: Crie um AuthKey

Primeiro, é necessário criar uma AuthKey para a sua conta da CertCentral. Você usará esta chave para gerar um token da solicitação para provar controle sobre o domínio. É possível criar uma AuthKey com uma POST ao ponto de extremidade Create AuthKey.

Um POST bem-sucedido a este ponto de extremidade retorna uma resposta HTTP 200 OK. O corpo da resposta inclui duas partes de informações:

  • auth_key_id – ID exclusiva da AuthKey criada.
  • auth_key – AuthKey gerada para a sua conta da CertCentral.

Apenas uma AuthKey pode existir para a sua conta da CertCentral. Se a sua conta já tiver uma AuthKey, o ponto de extremidade Create AuthKey retorna uma resposta HTTP 400 Bad Request com o erro auth_key_exists_for_account. Se você encontrar este erro, é possível usar o ponto de extremidade AuthKey details para obter a sua AuthKey existente.

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

Etapa 2: Gere uma solicitação de assinatura de certificado (CSR)

Após tiver a AuthKey para a sua conta, a próxima etapa é criar um CSR para o pedido do certificado. Será necessário o CSR para gerar um token da solicitação. Certifique-se de gerar o seu CSR no servidor em que o certificado estará instalado.

Precisa de ajuda para criar um CSR? Veja Criar um CSR (Solicitação de Assinatura de Certificado).

Etapa 3: Crie um carimbo de data e hora

O carimbo de data e hora determina quando o período de validade de 30 dias do token da solicitação começa. Ao criar um carimbo de data e hora, certifique-se de que a janela de validade resultante coincida com quando você enviará o seu pedido de certificado DV. Se o seu pedido for enviado antes ou após a janela de validade, a emissão imediata não poderá acontecer.

Você pode criar um carimbo de data e hora para uma data futura. Contudo, não envie o pedido de certificado DV antes de tal data. Como o token da solicitação ainda não é "válido", ele não pode ser usado para validar o domínio.

Após determinar quando a janela de validade do token da solicitação começará, é necessário formatar o carimbo de data e hora conforme exibido abaixo:

generic
yyyyMMddhhmmss

Por exemplo, October 21, 2019 1:30:12 PM se tornaria 20191021133012.

Etapa 4: Gere um token da solicitação

Tokens da solicitação têm uma validade de 30 dias determinada pelos dados no carimbo de data e hora. Ao gerar um token da solicitação, certifique-se de que a sua janela do carimbo de data e hora de 30 dias coincida com quando você enviará o seu pedido de certificado.

Agora que você tem a sua AuthKey, CSR e carimbo de data e hora, você está pronto para gerar um token de solicitação usado para provar controle sobre o domínio. Este token da solicitação lhe permite configurar o registro DNS TXT do seu domínio ou o arquivo fileauth.txt antes de fazer um pedido de certificado.

Como gerar o seu token da solicitação

  1. Construa o segredo a sofrer hash ao anexar o carimbo de data/hora no seu CSR formatado por PEM.
  2. Faça hash do segredo usando HMAC-SHA256 com a sua AuthKey como a chave.
  3. Converta o hash decimal resultante em um valor de hash decimal (base10).
  4. Converta o valor de hash decimal em um valor de hash base36.
  5. Certifique-se de que o valor de hash base36 tenha ao menos 50 caracteres. Se não, anexe com zeros (0) até ter 50 caracteres.
  6. Construa o token de solicitação final ao anexar o carimbo de data/hora ao valor de hash base36.

Este pseudocódigo mostra como usar as etapas acima para gerar um token de solicitação:

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

Etapa 5: Coloque o token de solicitação

Para a emissão imediata de certificados DV, é necessário colocar o token de solicitação em um destes lugares antes de pedir o certificado:

  • No DNS do domínio como um registro TXT.
  • Em um arquivo fileauth.txt em um local predeterminado no seu site.

Depois da colocação do token de solicitação, é possível enviar o seu pedido de certificado DV.

DNS TXT

É possível demonstrar controle sobre um domínio no seu pedido de certificado DV ao criar um registro DNS TXT contendo o token da solicitação. Depois da criação do registro, é possível solicitar o seu certificado DV.

Certifique-se de definir o dcv_method valor para dns-txt-token ao usar DNS TXT para o seu token de solicitação.

  1. Visite o site do seu provedor DNS e crie um novo registro TXT.

  2. No campo Valor TXT, cole o token de solicitação.

  3. Dependendo do seu pedido do certificado e domínio a ser protegido, faça um dos seguintes para o campo Host:

    • Domínio base (por ex., example.com)
      Deixe em branco ou insira o símbolo @ (dependendo dos seus requisitos DNS).
    • Subdomínio
      Insira o subdomínio a ser protegido pelo certificado.
    • Nome do domínio da autorização
      Insira _dnsauth.
  4. No campo tipo de registro (ou equivalente), selecione TXT.

  5. Selecione um valor para Vida útil (TTL) ou use seu valor padrão do provedor DNS.

  6. Salve o registro.

  7. Envie seu pedido de certificado DV, certificando-se de definir dcv_method para dns-txt-token.

File Auth

É possível demonstrar controle sobre um domínio no seu pedido de certificado DV ao hospedar um arquivo fileauth.txt contendo o token da solicitação em um local predeterminado no seu site. Certifique-se de evitar alguns dos erros mais comuns ao usar File Auth.

Depois que o arquivo está disponível no seu site, é possível solicitar o seu certificado DV.

Certifique-se de definir o dcv_method valor para http-token ao usar File Auth para o seu token de solicitação.

  1. Abra um editor de texto (como um Bloco de Notas) e cole no token da solicitação.

  2. Salve o arquivo como fileauth.txt.

  3. Disponibilize o arquivo no seu site neste local (crie diretórios conforme necessários):

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

Em servidores baseados em Windows, a pasta “well-known” deve ser criada através da linha de comando: mkdir .well-known

  1. Envie seu pedido de certificado DV, certificando-se de definir dcv_method para http-token.

Etapa 6: Enviar pedido de certificado DV

Depois de colocar o token da solicitação, você estará pronto para enviar sua solicitação de pedidos de certificados DV. Isso é feito com um POST ao ponto de extremidade Order DV SSL .

Um POST bem-sucedido a este ponto de extremidade retornará um código de resposta HTTP 201 Created. Se todos os requisitos de emissão imediata forem cumpridos, a cadeia completa de certificados é retornada no corpo de resposta.

Ao fazer o seu pedido de certificado DV, certifique-se de que o valor dcv_method corresponde ao local do token da solicitação.

Se qualquer um dos pré-requisitos estiverem ausentes, a emissão imediata não acontecerá. Em vez de receber a cadeia completa de certificados, você receberá o corpo de resposta do pedido Order DV SSL padrão.

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