Let’s Encrypt Zertifikate erneuern, ohne HPKP, TLSA/DANE zu beeinträchtigen

Let's Encrypt

Will man Let’s Encrypt mit Verfahren wie HTTP Public Key Pinning (HPKP) oder DNS-Based Authentication of Named Entities (DANE) nutzen, so stellt sich das Problem der sehr kurzlebigen Zertifikate bzw. Schlüssel-Paare bei Verwendung des Erneuerungs-Automatismus der Let’s Encrypt CertBots.

Der Wechsel des RSA-Schlüsselpaares bedingt ein sehr umsichtiges Vorgehen bei der Nutzung von HPKP und DANE. Es würde sich daher anbieten, eine Lösung zu verwenden, bei der das RSA-Schlüsselpaar nicht bei jeder Zertifikats-Erneuerung neu generiert sondern beibehalten wird.

Vorgangsweise

  1. Existiert bereits ein Zertifikat? Dann existiert auch der Private-Key hierzu bereits – Vorbereitung somit schon erfüllt. Falls noch kein Private-Key vorhanden ist, einen solchen generieren:
    openssl genrsa -out myDomain_privkey.pem 4096
  2. Ein Konfigurationsfile für die Erstellung des Certificate Signing Request (CSR) erstellen:
    vi myDomain.req.conf
    [req]
    distinguished_name = req_distinguished_name
    req_extensions = v3_req
    prompt = no
    
    [req_distinguished_name]
    CN = it-security.eu.org
    
    [v3_req]
    keyUsage = keyEncipherment, dataEncipherment
    extendedKeyUsage = serverAuth
    subjectAltName = @alt_names
    
    [alt_names]
    DNS.1 = it-security.eu.org
    DNS.2 = www.it-security.eu.org
    DNS.3 = demo.it-security.eu.org
    

    Anzupassen an die eigenen Domains ist der Common-Name (CN) sowie die Subject-Alternative-Names (alt_names).

  3. Einen Certificate Signing Request (CSR) erstellen:
    openssl req -new -config myDomain.req.conf -key myDomain_privkey.pem -out myDomain.csr
  4. Den erstellen Certificate Signing Request (CSR) begutachten (optional):
    openssl req -in myDomain.csr -text -noout
  5. Mittels Let’s Encrypt CertBot ein neues Zertifikat – basierend auf dem bestehenden CSR und somit dem bestehenden RSA-Key – anfordern:
    letsencrypt certonly --apache --csr myDomain.csr -d it-security.eu.org -d www.it-security.eu.org -d demo.it-security.eu.org

Hinweise:

  • Für eine Erneuerung des Zertifikates ist zukünftig nur noch Schritt 5 zu wiederholen.
  • Für eine Erweiterung der Subject-Alternative-Names im Zertifikat ist sowohl das Config-File (Schritt 2), als auch die CertBot-Commandline (Schritt 5) anzupassen.
  • Das Private-Key-File bleibt (solange es nicht neu generiert wird – siehe Schritt 1) nun fortwährend gleich, somit auch der Public-Key und etwaige TLSA/DANE-Records sowie HPKP-Header.
  • Es empfiehlt sich, den RSA-PrivateKey dennoch von Zeit zu Zeit (z.B. jährlich) zu erneuern. Jedenfalls ist der Schlüssel zu erneuern, wenn der Verdacht auf eine Kompromittierung (Server gehacked, Speichermedium abhanden gekommen, etc…) vorliegt.
  • Ein ausführliches Paper zur Nutzung von TLSA/DANE und HPKP ist in meinem Blog-Eintrag Sicherer E-Mail-Dienste-Anbieter (DNSSec & DANE) zu finden.

You May Also Like

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.