z6c - personal blog about topics

Christian Müller – Letzte Änderung: 28.09.2016 18:20 Uhr

Let's Encrypt Zertifikate per DNS Auth generieren

Wir betreiben einige hausinternen Dienste, die aus dem lokalen Netz über Subdomains im Stil von wiki.firma.zentonic.org erreichbar sind. Manche dieser Dienste (in Zukunft hoffentlich alle) werden mit SSL abgesichert. Seit Let's Encrypt (LE) haben wir nun die Möglichkeit, kostenlose, sauber signierte Zertifikate zu erhalten. Seit einiger Zeit bietet LE auch die Möglichkeit, die Inhaberschaft per DNS Authentication zu bestätigen. Hier folgt eine Schritt für Schritt Anleitung, sich ein LE Zertifikat für eine Subdomain mit Hilfe der Software manuale GitHub unter Verwendung von DNS Auth zu erstellen.

Voraussetzungen

  • Man benötigt Python3 sowie pip3
    • OS X: brew install python3. pip3 wird automatisch mit installiert
  • Man benötigt Zugriff auf den DNS, der die Domain verwaltet

Installation

pip3 install manuale

Registrierung und Erstellung des Zertifikats

Die Vorgehensweise der Erstellung eines Zertifikats für die Domain wiki.firma.zentonic.org wäre folgende:

Registrierung

manuale register me@zentonic.org

Authorisierung

$ manuale authorize wiki.firma.zentonic.org
DNS verification required. Make sure these records are in place:
  _acme-challenge.wiki.firma.zentonic.org. IN TXT "HASH"
Press enter to continue.

Erst weiterlesen, dann RETURN drücken!

Auf dem zuständigen DNS wird nun eine subdomain _acme-challenge.wiki.firma.zentonic.org. angelegt und für diese ein TXT Eintrag mit dem zwischen den Anführungszeichen angegebenen HASH (z.B. x-676p1a4_v6wapLrhTaspuRjoPg3X-NMKDBJchzsho).

Sofern es die Subdomain vorher nicht bereits gab, sollte der Eintrag sofort für alle Verfügbar sein. Testweise informiert man sich mit einem

dig @8.8.8.8 TXT _acme-challenge.wiki.firma.zentonic.org.

ob zumindest die Google Nameserver die Subdomain schon auflösen können und der korrekte HASH zurück geliefert wird.

Ist dies der Fall gehts in dem immer noch wartenden Script weiter durch Drücken von RETURN.

wiki.firma.zentonic.org: waiting for verification. Checking in 5 seconds.
wiki.firma.zentonic.org: OK! Authorization lasts until 2016-11-27T14:52:55Z.

1 domain(s) authorized. Let's Encrypt!

Zertifizierung

Nachdem nun sowohl unser Account, als auch unsere Inhaberschaft der Domain geklärt sind, wird nun das Zertifikat selbst generiert:

manuale issue --output certs/ wiki.firma.zentonic.org
Generating a 2048 bit RSA key. This might take a second.
Key generated.

Requesting certificate issuance...
Certificate issued.

Expires: 2016-06-01
 SHA256: e29034253618683bd86c13ef4e410e6c341f651641f248b955

Wrote key to certs/wiki.firma.zentonic.org.pem
Wrote certificate to certs/wiki.firma.zentonic.org.crt
Wrote certificate with intermediate to certs/wiki.firma.zentonic.org.chain.crt
Wrote intermediate certificate to certs/wiki.firma.zentonic.org.intermediate.crt

Fertig

Wie aus der Ausgabe hervorgeht, haben wir nun im Ordner certs/ die Zertifikatsfiles:

wiki.firma.zentonic.org.pem
wiki.firma.zentonic.org.crt
wiki.firma.zentonic.org.chain.crt
wiki.firma.zentonic.org.intermediate.crt

Diese nun einmal quer durchs Intranet verschieben, die Web- oder sonstige Server anpassen und neustarten und fertig.

Renew

Muss das Zertifikat erneuert werden (derzeit bei LE alle drei Monate), muss auch das Prozedere ab "Authorisierung" erneut ablaufen. Lediglich die Registrierung erspart man sich.

Ausblick

Das ganze ist ja schon ganz nett, aber cool wirds wohl erst, wenn ich das ganze per Ansible automatisiert durchführen kann.

Kommentare / Diskussion: