TLS aka Transport Layer Security – Verschlüsselung
Wir wollen dafür sorgen, dass unsere Mails auf verschlüsselten Wegen gesendet und empfangen werden. Immer mehr Provider warnen, wenn Emails über SMTP ohne TLS (ohne Verschlüsselung) empfangen wurden. GMail sagt dann z.B.:
Wir wollen aber lieber das hier sehen
Also müssen wir für sichere Übertragungswege sorgen. Verschlüsselung…wir brauchen Schlüssel!
Schlüssel generieren
Los geht’s! Erstelle ein beliebiges Verzeichnis in deinem Home-Folder und führe der Reihe nach folgende Befehle aus:
Wir generieren als erstes einen Key. Das dazu ausgewählte Passwort merken wir uns.
openssl genrsa -des3 -rand /etc/hosts -out smtpd.key-safe 1024
Jetzt erzeugen wir einen CSR, einen Zertifikatsrequest. Dazu brauchen wir den vorher generierten Schlüssel, das Passwort, ein paar Angaben
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Brandenburg
Locality Name (eg, city) []:Postdam
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Muster GmbH
Organizational Unit Name (eg, section) []:IT Abteilung
Common Name (e.g. server FQDN or YOUR name) []:meinmailserver.domain1.de
Email Address []:ich@domain1.de
Please enter the following ‚extra‘ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Wichtig ist hier vor allem der FQDN, den ihr korrekt passend zu eurem Mailserver angeben müsst. Also los:
openssl req -new -key smtpd.key-safe -out smtpd.csr
Dann machen wir aus dem CSR das eigentliche Zertifikat. Auch hier brauchen wir wieder das Passwort
openssl x509 -req -days 15000 -in smtpd.csr -signkey smtpd.key-safe -out smtpd.crt
Jetzt erzeugen wir noch eine nicht passwortgeschützte Version den Keys, sonst müssten wir bei jedem Serverstart das Passwort eingeben.
openssl rsa -in smtpd.key-safe -out smtpd.key-unsafe
Der letzte Schritt, wir erzeugen das Zertifikat unserer eigenen Certificate Authority, und bei den Eingaben halten wir uns an das Schema von weiter oben.
openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 15000
Wir erstellen unter /etc/postfix ein neues Verzeichnis und nennen es „certs“
Wir kopieren nun die Dateien smtpd.key-unsafe, smtpd.crt und cacert.pem nach /etc/postfix/certs/. Außerdem sollten wir diese Dateien mit einem chmod so absichern, dass nicht jeder User auf dem Server unseren Private Key lesen kann.
Postfix entsprechend konfigurieren
In der main.cf vom Postfix fügen wir an:
smtpd_tls_auth_only = no
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/certs/smtpd.key-unsafe
smtpd_tls_cert_file = /etc/postfix/certs/smtpd.crt
smtpd_tls_CAfile = /etc/postfix/certs/cacert.pem
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
Wir schauen noch in die master.cf, ob der Dienst tlsmgr nicht etwa auskommentiert ist
tlsmgr unix – – – 1000? 1 tlsmgr
Wir starten Postfix neu, um TLS zu aktivieren. Mit einem Testtool wie etwa https://de.ssl-tools.net/mailservers können wir unsere Konfiguration prüfen.
Ein STARTTLS UNTERSTÜTZT bestätigt uns. Glückwunsch. Du hast jetzt eine Verschlüsselung aktiv für jegliche Emails während der Transportphase. Wenn unsere User schon „zu doof“ sind für GPG und Co, können wir so wenigstens ein Minimum an Sicherheit gewährleisten. Der Transport zwischen den beiden beteiligten Servern ist nun zumindest sicher.
Picture-Credit: https://en.wikipedia.org/wiki/User:Matt_Crypto