Let’s Encrypt Zertifikate für Postfix und Dovecot einrichten

In letzter Zeit wird die Verwendung der kostenlosen Zertifikate von Let’s Encrypt immer beliebter. Deshalb ist es naheliegend, diese auch für Verschlüsselung der Mails bei Postfix zu verwenden. Im folgenden sind die wenigen Schritte für die Einrichtung erklärt, die bei einem Ubuntu 18.04 notwendig sind.

Installation

Let’s Encrypt können mit dem certbot erzeugt werden. Die Installation des Programms bei Ubuntu 18.04 erfolgt mit den folgendenBefehlen.

sudo apt update
sudo apt install python-certbot-apache

Erzeugung eines Zertifikates

Das Zertifikat wir mit dem Programm certbot erzeugt. Da die Verifizierung des Host über den Webauftritt erfolgt. Ist es zwingend erforderlich, dass ein Apache auf dem Server installiert ist. Das Programm certbot macht dann die notwendigen Anpassungen an der Konfiguration des Apache Webservers. Mit der Option -d werden die Hostnamen angegeben, für welche das Zertifikat ausgestellt werden soll. Dabei ist es möglich das Zertifikat gleich für mehrere Hostnamen auszustellen. Nach dem ausführen des Programms certbot werden zudem einige Fragen gestellt, deren Beantwortung für das anpassen der Konfiguration des Apache Webservers notwendigen sind. Mit dem folgenden Befehl testet man z.B. das Ausstellen eines Zertifikates für die Hostnamen www.purrucker.de, purrucker.de imap.purrucker.de und smtp.purrucker.de. 

sudo certbot --apache --staging -d www.purrucker.de -d purrucker.de -d imap.purrucker.de -d smtp.purrucker.de

Wenn alles funktioniert, kann man das Kommando ohne die Option „–staging“ ausführen. Dann fordert certbot beim Let’s-Encrypt-Projekt die generierten Zertifikate an, lädt diese herunter, installiert alle erforderlichen Dateien in das Verzeichnis /etc/letsencrypt, verändert die Apache-Konfiguration und startet Apache schließlich neu.

Einbindung des Zertifikates

Die Einbindung des Zertifikates in den Apache Webserver hat das Programm certbot erledigt. Bei Postfix und Dovecot muss die Einbindung jedoch von Hand erfolgen. Bei Postfix fügt man dazu die beiden folgenden Zeilen in die Datei /etc/postfix/main.cf ein.

smtpd_tls_cert_file= /etc/letsencrypt/live/www.purrucker.de/fullchain.pem
smtpd_tls_key_file= /etc/letsencrypt/live/www.purrucker.de/privkey.pem

Bei Dovecot benötigt man die drei folgenden Zeilen in der Datei /etc/dovecot/conf.d/10-ssl.conf.

ssl = yes
ssl_cert = </etc/letsencrypt/live/www.purrucker.de/fullchain.pem
ssl_key  = </etc/letsencrypt/live/www.purrucker.de/privkey.pem

Danach müssen beide Programme einmal neu gestartet werden.

service postfix restart
service dovecot restart

Automatische Erneuerung des Zertifikates

Das Let’s Encrypt Zertifikat ist grundsätzlich immer nur drei Monate gültig. Deshalb ist es notwendig, dieses regelmäßig zu erneuern. Um dies nicht immer von Hand machen zu müssen, sollte man sich dazu einen wöchentlichen Cronjob anlegen. Dazu einfach die Datei /etc/cron.weekly/letsencrypt mit folgendem Inhalt anlegen und ausführbar machen.

#!/bin/sh
# Datei /etc/cron.weekly/letsencrypt
certbot renew
result=$(find /etc/letsencrypt/live/ -type l -mtime -1 )
if [ -n "$result" ]; then
  systemctl restart postfix
  systemctl restart dovecot
fi

Debug einer IPSec Anbindung auf einer Cisco ASA

Die ASA (Adaptive Security Appliance) Firewalls von Cisco zeigen in der Standardeinstellung nur wenige Meldungen zu einem Aufbau eines IPSec VPN-Tunnels an. Wenn eine solche Verbindung nach der Einrichtung nicht funktioniert, kann es jedoch sinnvoll sein den Loglevel zu erhöhen und alle Meldungen anzuzeigen. Damit im Anschluss nicht zu viele Meldungen angezeigt werden, sollten die Meldungen vorher aber auf einen bestimmten IPSec VPN-Tunnel beschränkt werden. 

Beispiel

Gehen wir zum Beispiel mal davon aus, dass die Phase 1 bei einer IPSec Verbindung nicht aufgebaut wird und bei dieser das Protokoll IKEv2 verwendet wird.

Mit den folgenden drei Befehlen bringt man die Konsole der Cisco ASA dazu nur noch die Meldungen für den VPN-Tunnel zu der angegebenen IP-Adresse anzuzeigen und schaltet das höchste Loglevel für IKEv2 ein. Danach werden alle Meldungen zu dem Aufbau der Phase 1 des IPSec Tunnels zu der angegebenen IP-Adresse auf der Konsole angezeigt.

debug crypto condition peer <ip adresse>
debug crypto ikev2 protocol 255
debug crypto ikev2 platform 255

Ausstellen von Zertifikaten mit einer Gültigkeit von mehr als zwei Jahren bei Microsofts interner Zertifizierungsstelle

Warum können länger gültige Zertifikate sinnvoll sein?

Viele aktuelle Serversysteme von Microsoft und Drittanbietern benötigen Zertifikate. Dadurch wird der Einsatz einer internen Zertifizierungsstelle in einem Active Directory nahezu unerlässlich. Microsoft hat für diesen Zweck die „Active Directory-Zertifikatsdienste“ entwickelt, die man bei den Windows-Servern als Rolle hinzufügen kann.

Bei den Active Directory-Zertifikatsdiensten ist die maximale Gültigkeit eines Zertifikates auf 2 Jahre beschränkt. Dies kann sehr arbeitsaufwändig werden, wenn man viele Server betreibt, welche die Zertifikate manuell eingespielt bekommen. Deshalb kann es sinnvoll sein, die maximale Gültigkeit zu erhöhen.

Wodurch wird die maximale Gültigkeit eines Zertifikates beschränk?

Die Beschränkung der maximalen Gültigkeit eines Zertifikates bei den Active Directory-Zertifikatsdiensten wird durch den Parameter mit dem Namen ValidityPeriodunits in der Registry auf dem Server mit der Zertifizierungsstelle gesteuert. Dieser Parameter enthält die Anzahl von Jahren, die ein ausgestelltes Zertifikat maximal gültig sein darf und hat bei einer normalen Installation den Wert 2.

Wie kann ich die maximale Anzahl von Jahren erhöhen, die ein Zertifikat gültig sein darf?

Der Wert der Parameters ValidityPeriodunits kann mit der Hilfe des Kommandozeilentools certutil angezeigt oder geändert werden.

Um sich den aktuellen Wert des Parameters ValidityPeriodunits anzeigen zu lassen, gibt man in einer Kommandozeile mit Administrationsrechten den folgenden Befehl ein.

certutil -getreg ca\ValidityPeriodunits

Wenn man den Wert des Parameters ValidityPeriodunits auf zehn Jahre erhöhen möchte, gibt man den folgenden Befehl ein.

certutil -setreg ca\validityperiodunits 10

Wenn der Wert geändert wurde, müssen die Active Directory-Zertifikatsdienste neu gestartet werden, um die Änderungen zu aktivieren. Dies kann man durch die eingäbe der beiden folgenden Befehle in einer Kommandozeile mit Administrationsrechten erreichen.

net stop certsvc
net start certsvc