Früher war noch alles einfach.
Da hat man mit openssl einen Schlüssel (Key-File) erstellt.
Daraus einen Zertifikats-Anfrage (Certificate-Request) erstellt.
Die Anfrage an Zertifizierungsstelle (Certificate-Authority CA) geschickt.
Und zum Schluss das erhaltene Zertifikat zusammen mit dem Schlüssel im Webserver, Mailserver oder was auch immer eingebunden und gut war.
Das ist heute leider nicht mehr so.
Und das nicht mehr nur bei selbst-signierten und kostenlosen Zertifikaten, sondern auch von den offiziellen Stellen, wie Thawte, signierten Zertifikaten.
Damit der Browser oder auch das Mailprogramm die Zertifikate als gültig ansehen muss man zusätzlich noch die Zertifikatskette (certificate-chain) mitgeben.
Für die am häufigsten genutzten Webserver gibt es dazu auch schon Anleitungen.
Also z.B. für den apache httpd, aber auch für den Microsoft IIS einige andere.
Aber für postfix und courier imap gibt es zumindest bei thawte hierfür noch keine Anleitung.
Und genau das war in diesem Fall das Problem.
Schwierig fand ich es schon die richtige Datei für die Zertifkatskette zu finden.
Für das in diesem benutzte SSL123 Zertifikat von Thawte findet man es hier unter Download the Bundled CA version
Nun zur Vorgehensweise für postfix und courier imap/pop3:
Voraussetzung ist natürlich, dass man postfix und courier schon mit TLS bzw. SSL Support installiert/kompiliert hat.
Weitere Voraussetzungen sind natürlich die Zertifikatsdateien. Also der private Schlüssel, das Zertifikat und die oben beschriebene Datei für die Zertifikatskette.
Postfix
Der private Schlüssel wird in der main.cf mit der Option smtpd_tls_key_file angegeben.
Mit der Option smtpd_tls_cert_file gibt man normalerweise nur die Zertifikatsdatei an.
Für unseren Fall muss diese Datei jedoch nicht nur das Zertifikat für den Schlüssel alleine enthalten, sondern zusätzlich auch die Zertifikate der Zertifikatskette.
Dazu einfach die Datei der Zertifikatskette von oben anhängen.
Ein Beispiel:
In der main.cf:
smtpd_tls_cert_file = /etc/postfix/cert/mail.domain.cxm.crt
smtpd_tls_key_file = /etc/postfix/cert/mail.domain.cxm.key
Die Datei mail.domain.cxm.key ist der private Schlüssel. Dieser bleibt wie er ist.
Die Datei mail.domain.cxm.crt ist das Zertifikat, wie man es von der Zertifizierungsstelle bekommen hat.
Ich gehe mal davon aus, dass es ein ssl 123 Zertifikat von thawte ist.
Dann lädt man die Zertifikatskette runter:
wget https://search.thawte.com/library/VERISIGN/ALL_OTHER/thawte%20ca/SSL123_CA_Bundle.pem
Und hängt diese mit folgendem Befehl an das Zertifikat an:
cat SSL123_CA_Bundle.pem >> /etc/postfix/cert/mail.domain.cxm.crt
Nach einem postfix stop und postfix start dürfte das Zertifikat nun als vertrauenswürdig von allen aktuellen Browsern bzw. in diesem Fall Mail-Clients erkannt werden.
Courier IMAP/POP3
Die Vorgehensweise bei courier ist etwas anders. Hier gibt es für solche Fälle eine extra Konfigurations-Variable:
Jeweils für pop3 und imap gibt es in den Konfigurationsdateien imapd-ssl und pop3d-ssl die Option: TLS_TRUSTCERTS=
Hier muss der Pfad zum der Zertifikatskette eingegeben werden also je nach dem wo man die Datei abgelegt hat, in etwa so:
TLS_TRUSTCERTS=/etc/ssl/certs/SSL123_CA_Bundle.pem
Theoretisch soll es auch möglich sein dort nur ein Verzeichnis anzugeben, in dem eine oder mehrere Zertifikatsdateien liegen.
Das hat bei mir jedoch nicht funktioniert.
Auch hier müssen zum Abschluss natürlich die Dienste einmal neu gestartet werden.
Klasse Beitrag auch wenn es früher deutlich einfacher und effizienter war… Aber wir wollen nicht meckern… Stillstand ist Rückschritt!
LG
Markus