Let’s Encrypt Zertifikate für Dovecot und Postfix

Primär ist der Einsatz der kostenlosen Let's Encrypt Zertifikate für Webseiten vorgesehen. Wie erzeugt man nun aber ein Zertifikat für einen Mail- bzw. IMAP-Server, auf dem vielleicht gar kein Webserver läuft? Auch das ist in wenigen Schritten möglich. Ich verwende hier certbot zur Kommunikation mit Let's Encrypt, da er für Debian in den Jessie-Backports enthalten ist.

In der Beschreibung hier verwende ich <Domain-Name> für alle Stellen, an der die Domain des eigenen Mailservers eingetragen werden muss.

certbot installieren

Zuerst einmal muss das Jessie-Backport-Repository für die Paketverwaltung bekannt gemacht werden. Dazu legt man am einfachsten unter /etc/apt/sources.list.d eine neue Datei mit dem Namen jessi-backports.list und folgendem Inhalt an:

Danach muss die lokale Kopie des Repository-Verzeichnisses aktualisiert werden und anschließend kann certbot wie gewohnt installiert werden:

Zertifikat anfordern

Danach ist es ganz einfach, ein Zertifikat für den Mailserver anzufordern:

Mit diesem Kommando wird ein temporärer Webserver gestartet über welchen Let's Encrypt mit dem lokalen System kommuniziert. Dadurch wird sichergestellt, dass die zu registrierende Domain auch unter der entsprechenden Adresse erreichbar und damit für den Domainnamen im Zertifikat berechtigt ist.

Nach der erfolgreichen Generierung der Zertifikate werden diese unter /etc/letsencrypt/live/<Domain-Name>/ abgelegt.

Zertifikat in Dovecot einbinden

Unter /etc/dovecot/conf.d/10-ssl.conf trägt man die Pfade zum neuen Zertifikat ein:

Nach einem Neustart von Dovecot ist nun der IMAPS-Zugang mit dem neuen Let's Encrypt Zertifikat gesichert. Leider bietet z.B. Thunderbird keine Möglichkeit, ein gültiges Zertifikat zum Mailserver anzuzeigen (nur bei einem ungültigen Zertifikat kann es angezeigt werden). Mit Hilfe von openssl läßt sich jedoch einfach überprüfen, ob Dovecot das korrekte Zertifikat liefert (hier für meinen eigenen Mailserver mail.tausys.de):

Oben sieht man die Zertifikatskette und unten die erfolgreiche Verifizierung des Zertifikats.

Zertifikat in Postfix einbinden

Zwar ist es für SMTP nicht erforderlich, dass die Zertifikate gültig sind (viele SMTP-Server laufen mit selbst signierten Zertifikaten), da eine Überprüfung nicht vorgeschrieben ist. Warum jedoch sollte man das Let's Encrypt Zertifikat nicht verwenden, wenn man schon ein gültiges vorliegen hat? Große Anbieter benutzen selbst bei Mailservern ein von einer CA signiertes Zertifikat.

Das Zertifikat wird für Postfix in /etc/postfix/main.cf eingetragen:

Nach einem Neustart von Postfix kann man die korrekte Verwendung des Zertifikats in Postfix wiederrum mit openssl überprüfen. Da hier zuerst von einer ungesicherten Verbindung (SMTP über Port 25) mit STARTTLS auf eine gesicherte Verbindung umgeschaltet werden muss, müssen die Parameter für openssl entsprechend angepasst werden:

Zertifikate automatisch erneuern

Edit: Bei der Installation von certbot aus den Debian-Repositories wird automatisch ein Cron-Job unter /etc/cron.d/certbot angelegt. Dieser kann mit nachfolgenden Informationen entsprechend angepasst werden.

Mit Cron kann certbot periodisch aufgerufen werden und erneuert die demnächst ablaufenden Zertifikate automatisch. Ebenfalls bietet certbot die Möglichkeit bei erneuerten Zertifikaten ein Kommando auszuführen, damit z.B. die Mailservices (hier Dovecot und Postfix) zum Einlesen der neuen Zertifikate neu gestartet werden. Dazu legt man sich als erstes ein Skript z.B. unter /usr/local/sbin/restart_mailservices mit folgendem Inhalt an:

Das Skript muss nun noch ausführbar gemacht werden:

Anschließend kann ein Cron-Job erstellt werden, welcher das folgende Kommando periodisch aufruft:

 

Let’s Encrypt Zertifikate für Dovecot und Postfix
5 (100%) 1 vote

3 Gedanken zu „Let’s Encrypt Zertifikate für Dovecot und Postfix

  1. Mathias

    Hallo,
    Danke für die schöne Anleitung. Hat super funktioniert.

    Ein paar Anmerkungen:
    Für ubuntu Nutzer gibt es ein ppa: https://launchpad.net/~certbot/+archive/ubuntu/certbot

    Für den Posthook gibt es mittlerweile ein dediziertes Verzeichnis:
    /etc/letsencrypt/post-hook.d/
    Das Verzeichnis wir mit dem automatisch kreierten cron Befehl automatisch eingebunden.

    das t von startls fehlt übrigens immer noch ;-)

Schreibe einen Kommentar

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