Sofortige Ausstellung eines DV-Zertifikats

Bei der Verwendung der API zur Bestellung von DV-Zertifikaten muss man zu oft warten, bis das Zertifikat ausgestellt ist. Anhand der Schritte in dieser Workflow-Anleitung können Sie die Vorteile unserer Sofortausgabefunktion von DV-Zertifikaten nutzen, die es Ihnen ermöglicht, Ihr DV-Zertifikat sofort ausstellen zu lassen und Ihre API-Aufrufe um bis zu 70 % zu reduzieren.

Zur Beantragung von Encryption Everywhere-DV-Zertifikaten müssen Sie die folgenden Schritte ausführen und einen AuthKey für Ihr Konto konfigurieren. Anderenfalls erhalten Sie einen auth_key_not_setup-Fehler beim Einreichen eines Antrags.

Übersicht

Um die Sofortausstellung nutzen zu können, müssen Sie vor dem Einreichen Ihres DV-Zertifikatsauftrags diese Schritte befolgen:

  1. Erstellen Sie einen AuthKey für Ihr CertCentral-Konto.
  2. Erzeugen Sie einen CSR (Certificate Signing Request) für den DV-Zertifikatsauftrag.
  3. Erstellen Sie einen Zeitstempel, um die Gültigkeitsdauer des Antrags-Tokens zu bestimmen.
  4. Erstellen Sie ein Antrags-Token mit ihrem AuthKey und dem CSR.
  5. Fügen Sie das erzeugte Antrags-Token zur Domäne hinzu, sodass es durch das DV-Zertifikat geschützt ist.
  6. Erteilen Sie Ihren DV-Zertifikatsauftrag

Falls all diese Schritte abgeschlossen sind, wenn Sie Ihre DV-Zertifikatsauftrag senden, stellen wir Ihr DV-Zertifikat sofort aus und geben es in der Antwort zurück. Wurde jedoch irgendein Schritte übersprungen, ist eine sofortige Ausstellung nicht möglich.

Schritt 1: AuthKey erstellen

Sie müssen zuerst einen AuthKey für Ihr CertCentral-Konto erstellen. Mit diesem Schlüssel generieren Sie ein Antrags-Token zum Nachweis der Kontrolle über die Domäne. Sie können einen AuthKey mit einem Post an den Endpunkt Create AuthKey erstellen.

Ein erfolgreicher POST an diesen Endpunkt führt zu einem 200 OK-HTTP-Antwortcode. Die Antwort enthält zwei Informationsteile:

  • auth_key_id – Eindeutige ID des erstellten Authkey.
  • auth_key – Generierter AuthKey für Ihr CertCentral-Konto.

Es darf nur einen AuthKey für Ihr CertCentral-Konto geben. Wenn Ihr Konto bereits über einen AuthKey verfügt, liefert der Endpunkt „Create AuthKey“ eine 400 Bad Request-HTTP-Antwort mit dem auth_key_exists_for_account-Fehler. Wenn Sie diese Fehlermeldung erhalten, können Sie mithilfe des AuthKey-Details-Endpunkts Ihren vorhandenen AuthKey erhalten.

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

Schritt 2: Generieren eines CSR

Sobald Sie den AuthKey für ihr Konto haben, müssen Sie als Nächstes einen CSR für den Zertifikatsauftrag erstellen. Sie benötigen den CSR zum Generieren eines Antrags-Tokens. Der CSR sollte auf dem Server generiert werden, auf dem das Zertifikat installiert werden soll.

Benötigen Sie Hilfe bei der Erstellung eines CSR? Sehen Sie Erstellen eines CSR (Certificate Signing Request).

Schritt 3: Erstellen eines Zeitstempels

Der Zeitstempel bestimmt, wann die 30-tägige Gültigkeitsdauer des Antrags-Tokens beginnt. Achten Sie beim Erstellen eines Zeitstempels darauf, dass das Absenden Ihres DV-Zertifikatsauftrags in dem daraus resultierenden Gültigkeitsfenster liegt. Sollten Sie den Auftrag vor oder nach dem Gültigkeitsfenster erteilen, ist eine sofortige Ausstellung nicht möglich.

Sie können einen Zeitstempel für ein zukünftiges Datum erstellen. Erteilen Sie den DV-Auftrag nicht vor diesem Datum. Da das Antrags-Token noch nicht "gültig" ist, kann es nicht zur Domänenvalidierung verwendet werden., kann es nicht zur Domänenvalidierung verwendet werden.

Nach der Festlegung, wann das Gültigkeitsfenster des Antrags-Tokens beginnen soll, müssen Sie das Format des Zeitstempels, wie unten gezeigt, einrichten:

generic
yyyyMMddhhmmss

Aus October 21, 2019 1:30:12 PM wird z. B. 20191021133012.

Schritt 4: Ein neues Token generieren

Antrags-Tokens haben eine 30-tägige Gültigkeit, wie es die Daten des Zeitstempels bestimmen. Achten Sie beim Erstellen eines Antrags-Tokens darauf, dass das Absenden Ihres DV-Zertifikatsauftrags im 30-tägigen Fenster des Zeitstempels liegt.

Nachdem Sie nun den AuthKey, den CSR, und den Zeitstempel haben, können Sie nun ein Antrags-Token für den Nachweis der Kontrolle über die Domäne generieren. Dieses Antrags-Token ermöglicht Ihnen, den DNS-TXT-Datensatz Ihrer Domäne oder die fileauth.txt-Datei einzurichten, bevor Sie ein Zertifikat bestellen.

So generieren Sie Ihr Antrags-Token

  1. Erstellen Sie das Geheimnis, das gehasht werden soll, indem Sie Ihrem PEM-formatierten CSR den Zeitstempel voranstellen.
  2. Zerkleinern Sie das Geheimnis mittels HMAC-SHA256, wobei Sie den AuthKey als Schlüssel verwenden.
  3. Konvertieren Sie den resultierenden hexadezimalen Hashwert in einen dezimalen Hashwert.
  4. Konvertieren Sie den dezimalen Hashwert in einen Hashwert der Basis 36.
  5. Stellen Sie sicher, dass der Hashwert der Basis 36 mindestens 50 Zeichen lang sein. Füllen Sie ihn anderenfalls mit führenden Nullen auf (0) bis er 50 Zeichen lang ist.
  6. Erstellen Sie das endgültige Antrags-Token, indem Sie dem Hashwert der Basis 36 den Zeitstempel voranstellen.

Dieses Beispiel (Pseudo-Code) zeigt, wie Sie anhand der obigen Schritte das Antrags-Token generieren:

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

Schritt 5: Platzieren des Antrags-Tokens

Für eine sofortige Ausstellung des DV-Zertifikats müssen Sie das Antrags-Token an einer dieser Stellen platzieren, bevor Sie das Zertifikat bestellen:

  • Als TXT-Eintrag im DNS der Domäne
  • In einer fileauth.txt-Datei an einem vorher festgelegten Ort auf Ihrer Website

Sobald das Antrags-Token platziert ist, können Sie Ihren DV-Zertifikatsauftrag erteilen.

DNS TXT

Sie können die Kontrolle über eine Domäne in ihrem DV-Zertifikatsauftrag nachweisen, indem Sie einen DNS-TXT-Eintrag erstellen, der das Antrags-Token enthält. Sobald Sie den DNS-TXT-Eintrag erstellt haben, können Sie Ihr DV-Zertifikat beantragen.

Stellen Sie sicher, dass Sie den dcv_method-Wert auf dns-txt-token setzen, wenn Sie DNS-TXT für Ihr Antrags-Token verwenden.

  1. Gehen Sie zur Website Ihres DNS-Anbieters und erstellen Sie einen neuen TXT-Eintrag.

  2. Fügen Sie das Antrags-Token In das Feld TXT-Wert ein.

  3. Abhängig von Ihrem Zertifikatsauftrag und der zu schützenden Domäne wählen Sie eine der folgenden Optionen für das Host-Feld:

    • Basisdomäne (z. B. example.com)
      Leer lassen oder @-Symbol eingeben (je nach Ihren DNS-Anforderungen).
    • Unterdomäne
      Geben Sie die Unterdomäne ein, die durch das Zertifikat geschützt werden soll.
    • Autorisierung Domänenname
      Geben Sie _dnsauth ein.
  4. Im Feld Eintragstyp (oder ähnlich) wählen Sie TXT.

  5. Wählen Sie einen TTL-Wert (Time-to-Live) oder verwenden Sie den Standardwert Ihres DNS-Anbieters.

  6. Speichern Sie den Eintrag.

  7. Erteilen Sie Ihren DV-Zertifikatsauftrag, und setzen Sie die dcv_method auf dns-txt-token.

File Auth

Sie können die Kontrolle über eine Domäne in ihrem DV-Zertifikatsauftrag nachweisen, indem Sie an einer vorherbestimmten Stelle auf Ihrer Website eine fileauth.txt-Datei hosten, die das Antrags-Token enthält. Vermeiden Sie häufige Fehler bei der Verwendung von File Auth.

Sobald Sie die Datei auf Ihrer Website verfügbar ist, können Sie Ihr DV-Zertifikat beantragen.

Stellen Sie sicher, dass Sie den dcv_method-Wert auf http-token setzen, wenn Sie File Auth für Ihr Antrags-Token verwenden.

  1. Öffnen Sie einen Texteditor (z. B. Notepad), und fügen Sie Ihr Antrags-Token ein.

  2. Speichern Sie die Datei als fileauth.txt.

  3. Stellen Sie die Datei an dieser Stelle auf Ihrer Webseite zur Verfügung (Erstellen Sie bei Bedarf Verzeichnisse):

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

Auf Windows-basierten Servern muss der .well-known-Ordner über die Befehlszeile erstellt werden. mkdir .well-known

  1. Erteilen Sie Ihren DV-Zertifikatsauftrag, und setzen Sie die dcv_method auf http-token.

Schritt 6: DV-Zertifikatsauftrag erteilen

Sobald Sie das Antrags-Token platziert haben, können Sie Ihren DV-Zertifikatsauftrag erteilen. Dies geschieht anhand eines POST an den Endpunkt DV-SSL bestellen.

Ein erfolgreicher POST an diesen Endpunkt führt zu einem 201 Created-HTTP-Antwortcode. Wenn alle Anforderungen für eine sofortige Ausstellung erfüllt wurden, wird die vollständige Zertifikatskette im Antworttext wiedergegeben.

Wenn Sie Ihren DV-Zertifikatsauftrag erteilen, stellen Sie sicher, dass der dcv_method-Wert der Position des Antrags-Token entspricht.

Falls irgendeine Vorbedingung nicht erfüllt ist, gibt es keine sofortige Ausstellung. Statt der vollständigen Zertifikatskette erhalten Sie den Standardtext einer DV-SSL-Auftragsbestätigung.

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