Emissione immediata di certificati DV

Quando si utilizza l’API per ordinare i certificati DV, ci vuole troppo tempo per aspettare l’emissione del certificato. Seguendo la procedura indicata in questa guida al flusso di lavoro, sarai in grado di trarre vantaggio dalla nostra funzione di emissione immediata dei certificati DV, consentendoti di ricevere immediatamente il certificato DV emesso e ridurre le chiamate API fino al 70%.

Per richiedere i certificati DV Encryption Everywhere, devi seguire questa procedura e configurare una Chiave di autenticazione per il tuo account. Se non lo fai, riceverai un errore auth_key_not_setup quando invii una richiesta.

Panoramica

Per trarre vantaggio dall’emissione immediata, devi completare questa procedura prima di inviare l’ordine di certificato DV:

  1. Crea una Chiave di autenticazione per il tuo account CertCentral.
  2. Genera una richiesta di firma certificato (CSR) per l’ordine di certificato DV.
  3. Crea un timestamp per determinare il periodo di validità token richiesta.
  4. Costruisci un token di richiesta usando una Chiave di autenticazione e una CSR.
  5. Aggiungi il token di richiesta generato al dominio da proteggere con il certificato DV.
  6. Invia ordine di certificato DV.

Se tutte le fasi sono state completate quando invii il tuo ordine di certificato DV, emettiamo immediatamente il tuo certificato DV e lo riportiamo nel corpo della risposta. Se manca una qualsiasi di queste fasi, non è possibile effettuare l’emissione immediata.

Fase 1: Crea chiave di autenticazione

Prima di tutto, devi creare una Chiave di autenticazione per il tuo account CertCentral. Utilizzerai questa chiave per generare un token richiesta per fornire il controllo sul dominio. Puoi creare una Chiave di autenticazione con un POST per l’endpoint Crea crea chiave di autenticazione.

Un POST corretto a questo endpoint genera una risposta HTTP 200 OK. Il corpo della risposta include due informazioni importanti:

  • auth_key_id – ID univoco della Chiave di autenticazione creata.
  • auth_key – Chiave di autenticazione generata per il tuo account CertCentral.

Per il tuo account CertCentral può esistere solo una Chiave di autenticazione. Se il tuo account ha già una Crea chiave di autenticazione, l’endpoint Crea chiave di autenticazione riporta una risposta HTTP 400 richiesta sbagliata con l’errore auth_key_exists_for_account. Se si verifica questo errore, puoi usare l’endpoint dettagli chiave di autenticazione per ottenere la tua chiave di autenticazione esistente.

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

Fase 2: Genera una richiesta di firma del certificato (CSR)

Una volta che hai la chiave di autenticazione per il tuo account, la fase successiva è creare una CSR per l’ordine di certificato. Ti servirà la CSR per generare un token richiesta. Verifica di generare la CSR sul server dove sarà installato il certificato.

Ti serve aiuto per creare una CSR? Consulta Crea una CSR (richiesta di firma certificato).

Fase 3: Crea un timestamp

Il timestamp determina quando inizia il periodo di validità di 30 giorni del token richiesta. Quando si crea un timestamp, verifica che la finestra di validità generata coincida con il momento in cui invii il tuo ordine di certificato DV. Se l’ordine viene inviato prima o dopo la finestra di validità, l’emissione immediata non può avvenire.

Puoi creare un timestamp per una data futura. Tuttavia, non inviare l'ordine di certificato DV prima di quella data. Poiché il token richiesta non è ancora "valido", non può essere usato per convalidare il dominio.

Dopo aver determinato quando deve iniziare la finestra di validità del token richiesta, devi formattare il timestamp come mostrato di seguito:

generic
yyyyMMddhhmmss

Ad esempio, October 21, 2019 1:30:12 PM diventerà 20191021133012.

Fase 4: Genera un token richiesta

I token richiesta hanno una validità di 30 giorni determinata dalla data riportata nel timestamp. Quando si genera un token richiesta, verifica che la finestra del timestamp di 30 giorni coincida con il momento in cui invii il tuo ordine di certificato.

Ora che hai la chiave di autenticazione, la CSR e il timestamp, sei pronto per generare un token richiesta usato per dimostrare il controllo sul dominio. Questo token richiesta ti consente di impostare il record DNS TXT del tuo dominio o il file fileauth.txt prima di effettuare un ordine di certificato.

Come generare il tuo token richiesta

  1. Costruisci il segreto con hash creando il timestamp nella tua CSR formattata PEM.
  2. Esegui hash nel segreto usando HMAC-SHA256 con la chiave di autenticazione come chiave.
  3. Converti l’hash esadecimale risultante in un valore hash (base10) decimale.
  4. Converti il valore dell’hash decimale in un valore hash base36.
  5. Verifica che il valore hash base36 sia lungo almeno 50 caratteri. Se no, aggiungi degli zeri (0) finché non è lungo 50 caratteri.
  6. Costruisce il token richiesta finale creando il timestamp con valore hash base36.

Questo pseudo-codice di esempio mostra come usare la procedura sopra riportata per generare un token richiesta:

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

Fase 5: Posiziona un token richiesta

Per l’emissione immediata di certificati DV, devi posizionare il token richiesta in una di queste parti prima di ordinare il certificato:

  • Nel DNS del dominio come record TXT.
  • In un file fileauth.txt in una posizione predeterminata sul tuo sito web.

Una volta posizionato il token richiesta, puoi inviare il tuo ordine di certificato DV.

DNS TXT

Puoi dimostrare il controllo su un dominio sul tuo ordine di certificato DV creando un record DNS TXT contenente il token richiesta. Una volta creato il record DNS TXT, puoi richiedere il tuo certificato DV.

Accertati di impostare il valore dcv_method su dns-txt-token quando si utilizza DNS TXT per il tuo token richiesta.

  1. Vai sul sito del to DNS e crea un nuovo record TXT.

  2. Nel campo Valore TXT, incolla il token richiesta.

  3. In base all’ordine di certificato e al dominio da proteggere, procedure con una di queste fasi per il campo Host:

    • Dominio base (ad es. esempio.com)
      Lascia vuoto o inserisci il simbolo @ (in base ai requisiti DNS).
    • Sottodominio
      Inserisci il sottodominio da proteggere con il certificato.
    • Nome dominio autorizzazione
      Inserisci _dnsauth.
  4. Nel campo del tipo di record (o equivalente), selezionare TXT.

  5. Seleziona un valore Time-to-Live (TTL) o utilizza il valore predefinito del tuo DNS provider.

  6. Salva il record.

  7. Invia ordine di certificato DV, verificando di impostare dcv_method su dns-txt-token.

Autenticazione file

Puoi dimostrare il controllo su un dominio sul tuo ordine di certificato DV creando l’host di un file un fileauth.txt contenente il token richiesta in una posizione predeterminata sul sito web. Verifica di evitare alcuni degli errori più comuni quando utilizzi l’Autenticazione file.

Una volta che il file è disponibile sul tuo sito web, puoi richiedere il tuo certificato DV.

Accertati di impostare il valore dcv_method su http-token quando utilizzi l’Autenticazione file per il tuo token richiesta.

  1. Apri un editor di testo (ad esempio Notepad) e incolla il tuo token richiesta.

  2. Salva il file come fileauth.txt.

  3. Rendi il file disponibile sul tuo sito web in questa posizione (crea delle directory come necessario):

    http://[dominio.nome]/.well-known/pki-validation/fileauth.txt

Sui server basati su Windows, la cartella .well-known deve essere creata tramite la riga di comando: mkdir .well-known

  1. Invia ordine di certificato DV, verificando di impostare dcv_method su http-token.

Fase 6: Invia un ordine di certificato DV

Una volta posizionato il token richiesta, sei pronto per inviare la richiesta dell’ordine di certificato DV. Ciò avviene con un POST all’endpoint Ordina DV SSL.

Un POST corretto a questo endpoint riporterà un codice di risposta HTTP 201 creato. Se tutti i requisiti di emissione immediata vengono soddisfatti, nel corpo della risposta viene fornita la catena dei certificati completa.

Quando si posiziona l’ordine di certificato DV, verifica che il valore dcv_method corrisponda alla posizione del token richiesta.

Se manca uno qualsiasi dei prerequisiti, non sarà possibile effettuare l’emissione immediata. Anziché ricevere la catena dei certificati completa, riceverai il corpo di risposta SSL DV ordine standard.

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