TLS – Transport Layer Security für eingehende und abgehende Emails

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.:

Ohne Verschlüsselung bzw TLS
Ohne Verschlüsselung bzw TLS

 

Wir wollen aber lieber das hier sehen

Mit Verschlüsselung bzw TLS
Mit Verschlüsselung bzw TLS

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

Schreibe einen Kommentar

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

PS PHPCaptcha WP
PS PHPCaptcha for Wordpress