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
- 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
- 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).
- Einen Certificate Signing Request (CSR) erstellen:
openssl req -new -config myDomain.req.conf -key myDomain_privkey.pem -out myDomain.csr
- Den erstellen Certificate Signing Request (CSR) begutachten (optional):
openssl req -in myDomain.csr -text -noout
- 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.