Dovecot Imap Server mit unterschiedlichen TLS/SSL Zertifikaten verwenden
Einführung
Ich betreibe bereits seit mehreren Jahren einen eigenen Mailserver, welche alle meine Domains hostet. Da ich der einzige auf diesem Mailserver bin, habe ich bis vor einiger Zeit immer ein Zertifikat verwendet, welches für alle Domains herhalten konnte. Der Nachteil bei diesem vorgehen war jedoch, dass ich bei den anderen Konten immer eine Warnmeldung erhalten habe.
Es gibt einfache Möglichkeiten, wie z.B. mit Certbot Zerttifikate zu verwalten für einen solchen Server, jedoch ist auf meinem Mailserver nichts installiert, abgesehen der Mail-Software. Dementsprechend ist auch die Firewall eingestellt, nichtmal SSH spricht dieser Server ohne weiteres, sodass ich den Server so sicher wie möglich betreiben kann.
Ich habe vor zwei Monaten nun einen zentralen Zertifikatsserver aufgebaut, welcher alle meine Zertifikate verwaltet und verteilt, weshalb ich nun deutlich einfacher Zertifikate auf meinem Mailserver ausrollen kann, ohne das ich zusätzliche Software installieren muss, aus diesem Grund habe ich mich dazu entschieden für jede Domain nun ein eigenes Zertifikat zu verwenden.
Dieser Beitrag zeigt, wie eine entsprechende Konfiguration in Dovecot angepasst werden muss, sodass es keine Warnung im Mailprogramm der Wahl mehr gibt.
Hauptteil
Um die Konfiguration der SSL Konfiguration anzupassen, kann man entweder die Hauptkonfigurationsdatei verwenden oder die SSL Konfigurationsdatei. Da ich einen sehr einfachen IMAP-Server ohne Schnick Schnack habe, habe ich meine Konfiguration zentral in der Hauptkonfigurationsdatei unter /etc/dovecot/dovecot.conf
in dieser muss die TLS Konfiguration angelegt werden. Im Grundsatz sieht diese zum Beispiel wie folgt aus: (die "<" müssen bei den Pfad Angaben zwingend stehen, sodass der Inhalt der Datei eingefügt wird!)
###
### TLS Config
#######################
#Default SSL certificate for pure-smart.de
#Local_name Certs for other domains not covered by default
ssl = required
ssl_cert = </etc/certs/pure-smart.de/cert.pem
ssl_key = </etc/certs/pure-smart.de/key.pem
ssl_cipher_list = ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH
ssl_prefer_server_ciphers = yes
ssl_dh = </etc/dovecot/diffieh.pem
Diese Konfiguration reicht aus, wenn du nur nur eine Domain verwalten willst bzw. die Warnung für dich kein Problem ist. Damit wärst du dann fertig.
In meinem Fall soll es aber jetzt für jede Domain ein eigenes Zertifikat geben und dafür gibt es die "local_name" direktive, welche es ermöglicht Domain basiert Zertifikate zu verwenden. Um nun für bestimmte Domains eigene Zertifikate zu verwenden, fügst du darunter folgendes pro Domain an:
local_name imap.second-domain.de {
ssl_cert = </etc/certs/nodework.de/cert.pem
ssl_key = </etc/certs/nodework.de/key.pem
}
Für jede Domain, welche nicht mit dem Standardzertifikat verwendet werden soll (das, welches zuerst angegeben ist unter TLS-Config), wird jetzt ein local_name angelegt und ein eigenes Zertifikat übergeben. Auch hier das "<" am Anfang beachten, dieses ist WICHTIG!
Sobald geschehen, kann Dovevot neu gestartet werden und die Zertifikate werden nun verwendet. In den local_names können auch die anderen TLS Einstellungen verwendet werden, da ich jedoch per Default secure Einstellungen habe, ist dies bei mir nicht nötig. Falls du z.B. ältere Mail Clients für eine bestimmte Domain unterstützen willst, könnten im local name z.B. andere Cipher definiert werden.
Schluss
Wie immer sollte beachtet werden, dass sich die Einstellungen ändern können. Ich warte meinen Mailserver bei jedem Update und prüfe, ob es wichtige Anpassungen gibt (unter anderem mit automatisierten tools). Falls du dies nicht machst, solltest du in jedem Fall die Einstellungen prüfen, ob diese noch aktuell sind, wenn du das liest :)
Bei Fragen kannst du mir gerne eine Mail senden.
Back…