Lets Encrypt – SSL-Zertifikat fürs Blog umgestellt

Die Verbindung zum Blog ist seit bestehen ausschließlich per TLS erreichbar und war bis vor wenigen Tagen noch per Class 2 Zertifikats von StartCom verschlüsselt. Die Initiative der Zertifizierungsstelle Lets Encrypt verschlüsselte Verbindungen zum Standard werden zu lassen, gefällt mir daher ausgesprochen gut. Es gibt im Web eigentlich keine Gründe mehr, nicht auf eine verschlüsselte Verbindung zu setzen. Eine Ausnahme gibt es oft noch bei Seiten mit eingebettetem Inhalt Dritter wie z.B. Foren, wo man jedoch die Login-Bereiche entsprechend absichern sollte.

Da mein StartCom-Zertifikat ohnehin im Januar ausgelaufen wäre und erneuert werden musste, habe ich mich gleich dazu entschieden auf Lets Encrypt zu wechseln. Die Installation auf einem Ubuntu Server 12.04 ist überraschend einfach und geht wie folgt. Da der Port 80 bei mir jedoch weiterhin in Benutzung ist, setze ich auf die Webroot-Methode und nicht auf den temporär laufenden LetsEncrypt-Webserver.

cd /opt/
git clone https://github.com/letsencrypt/letsencrypt
cd /opt/letsencrypt/

Sollte euch git fehlen, so ist dies mit folgendem Befehl zu installieren.

aptitude install git

Damit ist LetsEncrypt erstmal auf eurem Webserver installiert und einsatzbereit. Bevor wir uns jedoch ein Zertifikat ausstellen, sollten wir den Webserver entsprechend vorkonfigurieren. Ich gehe generell von einer laufenden SSL-Konfiguration aus, sollte diese nicht vorliegen verweise ich gerne auf eine kleine Anleitung meinerseits.

Wir starten mit der Einrichtung einer Config-Datei zur einfachen Definierung der Parameter für das neue Zertifikat. Diese Config-Datei benennen wir übersichtshalber nach unserem zu nutzenden Domänennamen und nutzen .cli als Suffix.

nano /etc/letsencrypt/Logikkreise.de.cli

Da ich nicht bereit bin meinen laufenden Webserver temporär zur Ausstellung eines Zertifikats zu beenden, nutze ich die Webroot-Methode zur Domänen-Validierung.


 This is an example of the kind of things you can do in a configuration file.
# All flags used by the client can be configured here. Run Let's Encrypt with
# "--help" to learn more about the available options.

# Use a 4096 bit RSA key instead of 2048
rsa-key-size = 4096

# Always use the staging/testing server
# server = https://acme-staging.api.letsencrypt.org/directory

# Uncomment and update to register with the specified e-mail address
email = email@domain.tld

# Uncomment and update to generate certificates for the specified
# domains.
# domains = example.com, www.example.com
domains = domain.tld, www.domain.tld

# Uncomment to use a text interface instead of ncurses
# text = True

# Uncomment to use the standalone authenticator on port 443
# authenticator = standalone
# standalone-supported-challenges = tls-sni-01

# Uncomment to use the webroot authenticator. Replace webroot-path with the
# path to the public_html / webroot folder being served by your web server.
authenticator = webroot
webroot-path = /path/to/webroot/

Nach Erstellen der Konfiguration können wir durch auskommentieren der Server-Zeile zwischen den Test/Staging-Server von Lets Encrypt und dem produktiven Server wechseln. Nur letzterer stellt euch ein vertrauenswürdiges Zertifikat aus, mit ersterem testet Ihr jedoch eure Konfiguration.

Nach Anlegen der Config-Datei erstellen wir für unseren Apache Webserver Symlinks zu den baldigen SSL-Zertifikaten. Dieser Schritt kann auch nach Erstellung der Zertifikate erfolgen.

Die Zertifikate von Lets Encrypt werden automatisch an folgendem Ort abgelegt.

/etc/letsencrypt/live/

 

Pro Domain wird Unterordner im genannten Pfad erstellt und darunterliegend die drei Zertifikate gespeichert. Das öffentliche (cert.pem), das private (privkey.pem), die Zertifikatskette (fullchain.pem). Die Pfade lauten also beispielsweise wie folgt:

/etc/letsencrypt/live/logikkreise.de/cert.pem /etc/letsencrypt/live/logikkreise.de/privkey.pem /etc/letsencrypt/live/logikkreise.de/fullchain.pem

 

Ich habe mich dazu entschieden diese Dateien nicht in das SSL-Verzeichnis vom Apache zu kopieren, sondern nur sogenannte Symlinks zu erstellen, also Verknüpfungen.

ln -s /etc/letsencrypt/live/domain.tld/cert.pem /etc/apache2/ssl/domain.tld.cert.pem ln -s /etc/letsencrypt/live/domain.tld/privkey.pem /etc/apache2/ssl/domain.tld.privkey.pem ln -s /etc/letsencrypt/live/domain.tld/fullchain.pem /etc/apache2/ssl/domain.tld.fullchain.pem

 

Sollten die Pfade widererwarten doch anders sein, so sind die Symlinks einfach anzupassen. Danach passen wir ebenfalls die Pfade innerhalb der Apache-Konfiguration an.

nano /etc/apache2/sites-enabled/domain.tld SSLEngine on SSLCertificateFile /etc/apache2/ssl/domain.tld.cert.pem SSLCertificateKeyFile /etc/apache2/ssl/domain.tld.privkey.pem SSLCertificateChainFile /etc/apache2/ssl/domain.tld.fullchain.pem

 

Nach dem Abspeichern der Konfiguration können wir uns endlich das Zertifikat von Lets Encrypt ausstellen lassen.

/opt/letsencrypt/letsencrypt-auto certonly -c /etc/letsencrypt/domain.tld.cli

 

Ein erfolgreiches Ausstellen der Zertifikate wird euch mit einer entsprechenden Meldung quitiert. Startet im Anschluss euren Apache Service einmal durch und prüft durch Besuchen eurer Webseite ob das neue Zertifikat korrekt eingebunden wurde.

service apache2 restart

Ein korrekt eingerichtetes Zertifikat sieht wie folgt aus:

Zertifikat

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.