Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:postfix_tls_einsetzen

Postfix TLS einsetzen

Um für einen lauffähigen Postfix Mail-Transport Agent TLS zu aktivieren und einzusetzen sind nur wenige Konfigurationen in der main.cf des Postfix notwendig. Zusätzlich werden folgende Komponenten benötigt:

Um die Verschlüsselung einsetzen zu können, sind folgende Komponenten erforderlich:

  • einen private key
  • einen public certificate, welcher von einer Certificate Authority (CA) signiert ist
  • den root certificate der unterschreibenden Certificate Authority (CA) um deren Unterschrift zu überprüfen

Ab hier werden root-Rechte zur Ausführung der nachfolgenden Befehle benötigt. Um root zu werden geben Sie bitte folgenden Befehl ein:

$ su -
Password: 

Benötigtes RPM-Paket: OpenSSL

Die Erstellung der verschiedenen Schlüssel erfordert das Vorhandensein des RPM-Paketes openssl, welches allerdings bei fast jeder Standard-Installation von CentOS bereits installiert sein sollte. Falls nicht, kann dies mit nachfolgendem Befehl nachgeholt werden:

# yum install openssl

Der Inhalt des RPM-Paketes openssl sieht wie folgt aus und kann mit nachfolgendem Befehl angezeigt werden:

Name        : openssl                      Relocations: (not relocatable)
Version     : 0.9.8b                            Vendor: CentOS
Release     : 10.el5_2.1                    Build Date: Wed 07 Jan 2009 06:23:49 PM CET
Install Date: Thu 08 Jan 2009 08:42:04 PM CET      Build Host: builder16.centos.org
Group       : System Environment/Libraries   Source RPM: openssl-0.9.8b-10.el5_2.1.src.rpm
Size        : 3423000                          License: BSDish
Signature   : DSA/SHA1, Thu 08 Jan 2009 05:11:38 PM CET, Key ID a8a447dce8562897
URL         : http://www.openssl.org/
Summary     : The OpenSSL toolkit
Description :
The OpenSSL toolkit provides support for secure communications between
machines. OpenSSL includes a certificate management tool and shared
libraries which provide various cryptographic algorithms and
protocols.
/etc/pki/CA
/etc/pki/CA/private
/etc/pki/tls
/etc/pki/tls/cert.pem
/etc/pki/tls/certs
/etc/pki/tls/certs/Makefile
/etc/pki/tls/certs/ca-bundle.crt
/etc/pki/tls/certs/make-dummy-cert
/etc/pki/tls/misc
/etc/pki/tls/misc/CA
/etc/pki/tls/misc/c_hash
/etc/pki/tls/misc/c_info
/etc/pki/tls/misc/c_issuer
/etc/pki/tls/misc/c_name
/etc/pki/tls/openssl.cnf
/etc/pki/tls/private
/lib/libcrypto.so.0.9.8b
/lib/libcrypto.so.6
/lib/libssl.so.0.9.8b
/lib/libssl.so.6
/usr/bin/openssl
/usr/lib/openssl
/usr/lib/openssl/engines
/usr/lib/openssl/engines/lib4758cca.so
/usr/lib/openssl/engines/libaep.so
/usr/lib/openssl/engines/libatalla.so
/usr/lib/openssl/engines/libchil.so
/usr/lib/openssl/engines/libcswift.so
/usr/lib/openssl/engines/libgmp.so
/usr/lib/openssl/engines/libnuron.so
/usr/lib/openssl/engines/libsureware.so
/usr/lib/openssl/engines/libubsec.so
/usr/share/doc/openssl-0.9.8b
/usr/share/doc/openssl-0.9.8b/CHANGES
/usr/share/doc/openssl-0.9.8b/FAQ
/usr/share/doc/openssl-0.9.8b/INSTALL
/usr/share/doc/openssl-0.9.8b/LICENSE
/usr/share/doc/openssl-0.9.8b/NEWS
/usr/share/doc/openssl-0.9.8b/README
/usr/share/doc/openssl-0.9.8b/c-indentation.el
/usr/share/doc/openssl-0.9.8b/openssl.txt
/usr/share/doc/openssl-0.9.8b/openssl_button.gif
/usr/share/doc/openssl-0.9.8b/openssl_button.html
/usr/share/doc/openssl-0.9.8b/ssleay.txt
/usr/share/man/man1/asn1parse.1ssl.gz
/usr/share/man/man1/ca.1ssl.gz
/usr/share/man/man1/ciphers.1ssl.gz
/usr/share/man/man1/crl.1ssl.gz
/usr/share/man/man1/crl2pkcs7.1ssl.gz
/usr/share/man/man1/dgst.1ssl.gz
/usr/share/man/man1/dhparam.1ssl.gz
/usr/share/man/man1/dsa.1ssl.gz
/usr/share/man/man1/dsaparam.1ssl.gz
/usr/share/man/man1/ec.1ssl.gz
/usr/share/man/man1/ecparam.1ssl.gz
/usr/share/man/man1/enc.1ssl.gz
/usr/share/man/man1/errstr.1ssl.gz
/usr/share/man/man1/gendsa.1ssl.gz
/usr/share/man/man1/genrsa.1ssl.gz
/usr/share/man/man1/md2.1ssl.gz
/usr/share/man/man1/md4.1ssl.gz
/usr/share/man/man1/md5.1ssl.gz
/usr/share/man/man1/mdc2.1ssl.gz
/usr/share/man/man1/nseq.1ssl.gz
/usr/share/man/man1/ocsp.1ssl.gz
/usr/share/man/man1/openssl.1ssl.gz
/usr/share/man/man1/pkcs12.1ssl.gz
/usr/share/man/man1/pkcs7.1ssl.gz
/usr/share/man/man1/pkcs8.1ssl.gz
/usr/share/man/man1/req.1ssl.gz
/usr/share/man/man1/ripemd160.1ssl.gz
/usr/share/man/man1/rsa.1ssl.gz
/usr/share/man/man1/rsautl.1ssl.gz
/usr/share/man/man1/s_client.1ssl.gz
/usr/share/man/man1/s_server.1ssl.gz
/usr/share/man/man1/s_time.1ssl.gz
/usr/share/man/man1/sess_id.1ssl.gz
/usr/share/man/man1/sha.1ssl.gz
/usr/share/man/man1/sha1.1ssl.gz
/usr/share/man/man1/smime.1ssl.gz
/usr/share/man/man1/speed.1ssl.gz
/usr/share/man/man1/spkac.1ssl.gz
/usr/share/man/man1/sslpasswd.1ssl.gz
/usr/share/man/man1/sslrand.1ssl.gz
/usr/share/man/man1/verify.1ssl.gz
/usr/share/man/man1/version.1ssl.gz
/usr/share/man/man1/x509.1ssl.gz
/usr/share/man/man5/config.5ssl.gz
/usr/share/man/man5/x509v3_config.5ssl.gz
/usr/share/man/man7/Modes_of_DES.7ssl.gz
/usr/share/man/man7/des_modes.7ssl.gz

Erstellen einer eigenen Certificate Authority (CA)

Bei der Erstellung einer eigenen Certificate Authority (CA) kann ein Script, welches bei der Installation von openssl mitgeliefert wird und sich im Verzeichnis /etc/pki/tls/misc/ befindet, genutzt werden. Der Name des Script lautet CA.

Folgender Aufruf erstellt eine eigene Certificate Authority (CA):

:!: HINWEIS - Nicht benötigte Angaben werden mit Eingabe eines Punktes [.] übersprungen!

# /etc/pki/tls/misc/CA -newca
CA certificate filename (or enter to create)

Making CA certificate ...
Generating a 1024 bit RSA private key
....++++++
.......++++++
writing new private key to '../../CA/private/./cakey.pem'
Enter PEM pass phrase: cageheim
Verifying - Enter PEM pass phrase: cageheim
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:DE
State or Province Name (full name) [Berkshire]:Bavaria (Bayern)
Locality Name (eg, city) [Newbury]:Munich (Muenchen)
Organization Name (eg, company) [My Company Ltd]:Klaus Tachtler            
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:tachtler.net
Email Address []:postmaster@tachtler.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:.
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ../../CA/private/./cakey.pem: cageheim
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 0 (0x0)
        Validity
            Not Before: Feb 16 14:42:19 2009 GMT
            Not After : Feb 16 14:42:19 2012 GMT
        Subject:
            countryName               = DE
            stateOrProvinceName       = Bavaria (Bayern)
            organizationName          = Klaus Tachtler
            commonName                = tachtler.net
            emailAddress              = postmaster@tachtler.net
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                37:02:9E:78:46:1F:C2:34:E4:ED:C9:29:12:68:6D:32:4B:42:21:EC
            X509v3 Authority Key Identifier: 
                keyid:37:02:9E:78:46:1F:C2:34:E4:ED:C9:29:12:68:6D:32:4B:42:21:EC

Certificate is to be certified until Feb 16 14:42:19 2012 GMT (1095 days)

Write out database with 1 new entries
Data Base Updated

Durch ausführen des Scriptes mit nachfolgendem Aufrufparameter /etc/pki/tls/misc/CA -newca ist eine neue Verzeichnisstruktur unter

  • /etc/pki/CA

entstanden, deren Inhalt mit nachfolgendem Befehl bequem aufgelistet werden kann:

# ll -la *
-rw-r--r-- 1 root root 3248 Mar 23 15:42 cacert.pem
-rw-r--r-- 1 root root  725 Mar 23 15:42 careq.pem
-rw-r--r-- 1 root root  124 Mar 23 15:42 index.txt
-rw-r--r-- 1 root root   21 Mar 23 15:42 index.txt.attr
-rw-r--r-- 1 root root    0 Mar 23 15:41 index.txt.old
-rw-r--r-- 1 root root    3 Mar 23 15:42 serial
-rw-r--r-- 1 root root    3 Mar 23 15:41 serial.old

certs:
total 8
drwxr-xr-x 2 root root 4096 Mar 23 15:41 .
drwxr-xr-x 6 root root 4096 Mar 23 15:42 ..

crl:
total 8
drwxr-xr-x 2 root root 4096 Mar 23 15:41 .
drwxr-xr-x 6 root root 4096 Mar 23 15:42 ..

newcerts:
total 12
drwxr-xr-x 2 root root 4096 Mar 23 15:42 .
drwxr-xr-x 6 root root 4096 Mar 23 15:42 ..
-rw-r--r-- 1 root root 3248 Mar 23 15:42 00.pem

private:
total 12
drwxr-xr-x 2 root root 4096 Mar 23 15:41 .
drwxr-xr-x 6 root root 4096 Mar 23 15:42 ..
-rw-r--r-- 1 root root  963 Mar 23 15:42 cakey.pem

Erstellen eines eigenen Certificate Requests

Um den noch zu erstellenden Schlüssel bzw. den Certificate Requests wieder zu finden, kann mit folgendem Befehl in das Verzeichnis /etc/pki/tls/misc gewechselt werden:

# cd /etc/pki/tls/misc

Zwei weitere Komponenten sind einmal der benötigte private key und der benötigte Certificate Requests welche ebenfalls mit dem Script, welches schon bei der Erstellung der Certificate Authority (CA) genutzt wurde und sich unter /etc/pki/tls/misc befindet und den Namen CA trägt, welche mit nachfolgendem Befehl erstellt werden können:

:!: HINWEIS - Nicht benötigte Angaben werden mit Eingabe eines Punktes [.] übersprungen!

# /etc/pki/tls/misc/CA -newreq
Generating a 1024 bit RSA private key
.++++++
.............................................++++++
writing new private key to 'newkey.pem'
Enter PEM pass phrase: keygeheim
Verifying - Enter PEM pass phrase: keygeheim
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:DE
State or Province Name (full name) [Berkshire]:Bavaria (Bayern)
Locality Name (eg, city) [Newbury]:Munich (Muenchen)
Organization Name (eg, company) [My Company Ltd]:Klaus Tachtler
Organizational Unit Name (eg, section) []:.
Common Name (eg, your name or your server's hostname) []:mx1.tachtler.net
Email Address []:postmaster@tachtler.net

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:.
Request is in newreq.pem, private key is in newkey.pem

Durch ausführen des Scriptes mit nachfolgendem Aufrufparameter /etc/pki/tls/misc/CA -newreq sind zwei neue Dateien unter

  • /etc/pki/tls/misc

entstanden, welche mit nachfolgendem Befehl aufgelistet werden können:

# ls -la *.pem
-rw-r--r-- 1 root root 963 Mar 23 15:56 newkey.pem
-rw-r--r-- 1 root root 729 Mar 23 15:56 newreq.pem

:!: WICHTIG - Die so entstandene Datei /etc/pki/tls/misc/newreq.pem enthält den Certificate Requests!

Unterschreiben des Certificate Requests

Um den in obigen Beispiel entstandenen Certificate Requests nun mit dem Schlüssel der Certificate Authority (CA) zu unterschreiben, kann wieder das Script, welches schon bei der Erstellung der Certificate Authority (CA) genutzt wurde und sich unter /etc/pki/tls/misc befindet und den Namen CA trägt, mit nachfolgendem Befehl genutzt werden:

:!: WICHTIG - Das Passwort, ist das Passwort, welches im Schritt Erstellen einer eigenen Certificate Authority (CA) verwendet wurde!

# /etc/pki/tls/misc/CA -sign
Using configuration from /etc/pki/tls/openssl.cnf
Enter pass phrase for ../../CA/private/cakey.pem: cageheim
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 1 (0x1)
        Validity
            Not Before: Mar 23 15:10:37 2009 GMT
            Not After : Mar 23 15:10:37 2010 GMT
        Subject:
            countryName               = DE
            stateOrProvinceName       = Bavaria (Bayern)
            localityName              = Munich (Muenchen)
            organizationName          = Klaus Tachtler
            commonName                = mx1.tachtler.net
            emailAddress              = postmaster@tachtler.net
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                02:81:91:54:70:EC:27:E8:AE:34:1F:A9:8C:3D:51:9A:32:3D:C6:B8
            X509v3 Authority Key Identifier: 
                keyid:37:02:9E:78:46:1F:C2:34:E4:ED:C9:29:12:68:6D:32:4B:42:21:EC

Certificate is to be certified until Mar 23 15:10:37 2010 GMT (365 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=DE, ST=Bavaria (Bayern), O=Klaus Tachtler, CN=tachtler.net/emailAddress=postmaster@tachtler.net
        Validity
            Not Before: Mar 23 15:10:37 2009 GMT
            Not After : Mar 23 15:10:37 2010 GMT
        Subject: C=DE, ST=Bavaria (Bayern), L=Munich (Muenchen), O=Klaus Tachtler, CN=mx1.tachtler.net/emailAddress=postmaster@tachtler.net
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:a4:9e:c9:95:4a:50:b7:5d:cf:50:9b:d0:97:37:
                    d5:92:d7:f8:92:46:90:af:54:68:bb:c5:43:10:3d:
                    d4:c8:ae:53:05:28:86:d7:80:a0:03:5a:34:f0:84:
                    52:7a:0c:e7:a6:c0:33:38:6e:55:0c:2f:6a:6c:21:
                    01:9a:66:28:32:52:d5:0c:7c:06:99:e3:78:b3:f2:
                    93:23:8a:5d:89:af:f3:69:2b:1f:8b:45:83:b0:7e:
                    1c:51:a9:ef:e8:80:9b:a9:7c:d2:24:34:90:f1:34:
                    5c:50:a0:6c:b3:67:4f:ab:68:45:21:11:04:a3:dc:
                    26:74:35:f8:75:19:f8:3c:dd
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints: 
                CA:FALSE
            Netscape Comment: 
                OpenSSL Generated Certificate
            X509v3 Subject Key Identifier: 
                02:81:91:54:70:EC:27:E8:AE:34:1F:A9:8C:3D:51:9A:32:3D:C6:B8
            X509v3 Authority Key Identifier: 
                keyid:37:02:9E:78:46:1F:C2:34:E4:ED:C9:29:12:68:6D:32:4B:42:21:EC

    Signature Algorithm: sha1WithRSAEncryption
        b3:e4:d3:7d:55:0d:7c:a6:26:ac:a4:b3:27:d4:13:61:98:0b:
        ce:f4:ce:99:87:da:43:ee:65:39:95:63:cc:b5:2a:d3:ad:e0:
        78:a2:d5:41:76:ba:43:b1:7c:67:7d:28:8f:01:f2:0c:f3:73:
        dc:e8:18:a0:b5:ff:39:d7:54:e0:44:54:a5:89:ab:6e:45:ca:
        75:04:44:4a:60:11:ec:94:ef:53:93:ae:b9:b7:6a:58:c8:97:
        d1:76:1d:eb:68:93:7d:fd:fa:09:00:d8:e3:07:5d:be:85:bc:
        59:04:10:ae:8d:06:51:ee:28:d6:56:fa:e9:56:a8:34:73:dd:
        61:07
-----BEGIN CERTIFICATE-----
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQUFADCBgDELMAkGA1UEBhMCREUx
GTAXBgNXBAgTEEJhdmFyaWEgKEJheWVybikxFzAVBgNVBAoTDktsYXVzIFRhY2h0
bGVyMRUwEwYDVQQDEwx0YWNodGxlci5uZXQxJjAkBgkqhkiG9w0BCQEWF3Bvc3Rt
YXN0ZXJAdGFjaHRsZXIubmV0MB4XDTA5MDMyMzE1MTAzN1oXDTEwMDMyMzE1MTAz
N1owgaAxCbAJBgNVBAYTAkRFMRkwFwYDVQQIExBCYXZhcmlhIChCYXllcm4pMRow
GAYDVQQHExFNdW5pY2ggKE11ZW5jaGVuKTEXMBUGA1UEChMOS2xhdXMgVGFjaHRs
ZXIxGTAXBgNVBAMTET14MS50YWDodGxlci5uZXQxJjAkBgkqhkiG9w0BCQEWF3Bv
c3RtYXN0ZXJAdGFjaHRsZXIubmX0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQDEnsmVSlC3Xa9Qm9CXN9WS5/iSRpCvVGi7xUOAPdTIrlMFKIbXgKADWjTwhFJ6
DOfGwNM4blUML2psIQGaAig0YtUMfAaZ43iz8pMjil2Jr/NpKx+LRYOwfhtRqe/o
gJupfNIkNJDxNFxQ4GyzZ0+raGUhEQSj3CZ0Nfh1Sfg83QIDAQABo3sweTAJBgNV
HRMEAjAAMCwDCWCGSAGG+EIBDQQfFh1PcGVeU1NMIEdlbmVyYXRlZCBDZXJ0aWZp
Y2F0ZTAdBgNVHQ4EFgQUAYSWlHDqJ9iuNE+giD1QmjKNxqgwHwYDVR0jBBgwFoAU
RwKfeFYvgjTk7bkpQohtM0xCIuswDQYJKoZIhvcNAQEFBQADgYEAs+TTfVUNfKYm
rKSzJ9QTYZgLzvTOmYfaQ+5lOZVjzLUq063geKLVQXa6Q7F8Z30ojwHyDPNz3OgY
oLX/OddU4ELUpYmrbkXKdQRESmAR7JTvU5OuubdqWMiX0XYd62iTff36CQDY4wdd
voW8WQQQro0GUe4i1lb66VaoNHPdYQc=
-----END CERTIFICATE-----
Signed certificate is in newcert.pem

Durch ausführen des Scriptes mit nachfolgendem Aufrufparameter /etc/pki/tls/misc/CA -sign ist eine weitere neue Dateien unter

  • /etc/pki/tls/misc

entstanden, welche mit nachfolgendem Befehl aufgelistet werden kann:

# ls -la *.pem
-rw-r--r-- 1 root root 3318 Mar 23 16:10 newcert.pem
-rw-r--r-- 1 root root  963 Mar 23 15:56 newkey.pem
-rw-r--r-- 1 root root  729 Mar 23 15:56 newreq.pem

:!: WICHTIG - Die so entstandene Datei /etc/pki/tls/misc/newcert.pem enthält das neue Certificate!

Entfernen des Passwortes vom private key

Ein Problem ist durch die Erstellung der einzelnen Komponenten, wie in den drei vorhergehenden Schritten beschrieben noch offen.

:!: WICHTIG - Der private key ist mit einem Passwort verschlüsselt !

Um dieses Problem zu lösen und das Passwort aus dem private key zu entfernen, kann folgender Aufruf von openssl genutzt werden:

:!: WICHTIG - Das Passwort, ist das Passwort, welches im Schritt Erstellen eines eigenen Certificate Requests verwendet wurde!

# openssl rsa < /etc/pki/tls/misc/newkey.pem > /etc/pki/tls/misc/key.pem
Enter pass phrase: keygeheim
writing RSA key

Durch ausführen des oben genannten Befehls ist eine weitere neue Dateien unter

  • /etc/pki/tls/misc

entstanden, welche mit nachfolgendem Befehl aufgelistet werden kann:

# ls -la *.pem
-rw-r--r-- 1 root root  887 Mar 23 16:29 key.pem
-rw-r--r-- 1 root root 3318 Mar 23 16:10 newcert.pem
-rw-r--r-- 1 root root  963 Mar 23 15:56 newkey.pem
-rw-r--r-- 1 root root  729 Mar 23 15:56 newreq.pem

:!: WICHTIG - Die so entstandene Datei /etc/pki/tls/misc/key.pem enthält den private key OHNE Passwort!

Postfix für TLS konfigurieren

Bevor mit der abschließenden Konfiguration von Postfix zur Nutzung von TLS begonnen werden kann, sind die in den vorhergehenden Schritten erstellten Dateien:

  • /etc/pki/tls/misc/key.pem
  • /etc/pki/tls/misc/newcert.pem
  • /etc/pki/CA/cacert.pem

noch zu kopieren und ggf. umzubenennen und die Dateirechte der entsprechend anzupassen!

Als erstes werden mit den nachfolgenden Befehlen drei neue Verzeichnisse im bestehen Verzeichnis /etc/pki angelegt:

# mkdir /etc/pki/postfix
# mkdir /etc/pki/postfix/certs
# mkdir /etc/pki/postfix/private

Anschließend werden mit den nachfolgenden Befehlen die entsprechenden Dateien an den jeweiligen Bestimmungsort kopiert und ggf. umbenannt:

# cp /etc/pki/tls/misc/key.pem /etc/pki/postfix/private/key.pem
# cp /etc/pki/tls/misc/newcert.pem /etc/pki/postfix/certs/cert.pem
# cp /etc/pki/CA/cacert.pem /etc/pki/postfix/certs/CAcert.pem

Die Dateirechte der soeben kopieren und ggf. umbenannten Dateien

  • /etc/pki/postfix/private/key.pem
  • /etc/pki/postfix/certs/cert.pem
  • /etc/pki/postfix/certs/CAcert.pem

können mit folgenden Befehlen wie folgt korrigiert werden:

# chmod 400 /etc/pki/postfix/private/key.pem
# chmod 400 /etc/pki/postfix/certs/cert.pem
# chmod 400 /etc/pki/postfix/certs/CAcert.pem

Durch Ausführen der oben genannten Befehle sieht der Inhalt des Verzeichnisses

  • /etc/pki/postfix

wie folgt aus, welches mit nachfolgendem Befehl aufgelistet werden kann:

# ls -la /etc/pki/postfix/*
/etc/pki/postfix/certs:
total 16
drwxr-xr-x 2 root root 4096 Mar 23 17:01 .
drwxr-xr-x 4 root root 4096 Mar 23 16:46 ..
-r-------- 1 root root 3248 Mar 23 17:01 CAcert.pem
-r-------- 1 root root 3318 Mar 23 16:52 cert.pem

/etc/pki/postfix/private:
total 12
drwxr-xr-x 2 root root 4096 Mar 23 16:52 .
drwxr-xr-x 4 root root 4096 Mar 23 16:46 ..
-r-------- 1 root root  887 Mar 23 16:52 key.pem

Die jeweiligen Arbeitskopien der gerade kopierten Dateien, können mit nachfolgenden Befehlen gelöscht werden:

# rm /etc/pki/tls/misc/*.pem
rm: remove regular file `/etc/pki/tls/misc/key.pem'? y
rm: remove regular file `/etc/pki/tls/misc/newcert.pem'? y
rm: remove regular file `/etc/pki/tls/misc/newkey.pem'? y
rm: remove regular file `/etc/pki/tls/misc/newreq.pem'? y

Die nun abschließende Konfiguration von Postfix wird in der Konfigurationsdatei /etc/postfix/main.cf vorgenommen. Die Ergänzungen sehen wie folgt aus (nur relevanter Auszug):

...
# SSL-Certificate - STARTTLS
#
smtpd_tls_key_file = /etc/pki/postfix/private/key.pem
smtpd_tls_cert_file = /etc/pki/postfix/certs/cert.pem
smtpd_tls_CAfile = /etc/pki/postfix/certs/CAcert.pem
smtpd_tls_security_level = may
smtp_tls_security_level = may
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
 
# SSL-Certificate - Generate logfile entries
#
smtpd_tls_received_header = yes
smtp_tls_loglevel = 1
...

Abschließend ist ein Neustart des Postfix mit folgendem Befehl notwendig:

# service postfix restart
Shutting down postfix:                                     [  OK  ]
Starting postfix:                                          [  OK  ]

Untrusted TLS connection

Falls nach der Postfix TLS Konfiguration nachfolgender Fehler in der Log-Datei

  • /var/log/maillog

auftauchen sollte:

Sep 16 09:58:50 rechner60 postfix/smtp[20322]: setting up TLS connection to mx1.nausch.org[88.217.187.21]:25
Sep 16 09:58:50 rechner60 postfix/smtp[20322]: certificate verification failed for mx1.nausch.org[88.217.187.21]:25: untrusted issuer /O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org
Sep 16 09:58:50 rechner60 postfix/smtp[20322]: Untrusted TLS connection established to mx1.nausch.org[88.217.187.21]:25: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)

kann dies durch einbinden der ca-bundle.crt-Datei, welche standardmäßig in CentOS vorhanden ist und wie nachfolgend dargestellt zur Konfigurationsdatei

  • /etc/postfix/main.cf*

hinzugefügt werden kann (nur relevanter Ausschnitt):

...
smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt
...

:!: HINWEIS - Eigene Zertifikate, können an die Datei /etc/pki/tls/certs/ca-bundle.crt im TEXT-Format angehängt werden !!!

Anschließend sollten, grundsätzlich bei offiziellen Zertifizierungsstellen, keine Fehlermeldungen mehr zu sehen sein:

...
Sep 16 10:17:01 rechner60 postfix/smtp[21143]: setting up TLS connection to mx1.nausch.org[88.217.187.21]:25
Sep 16 10:17:01 rechner60 postfix/smtp[21143]: Trusted TLS connection established to mx1.nausch.org[88.217.187.21]:25: TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)
...

TLS-Test via Telnet

Um einen Test für die TLS-Verschlüsselung via Telnet durchzuführen, kann folgender Aufruf von openssl genutzt werden:

# openssl s_client -connect mx1.tachtler.net:25 -starttls smtp
CONNECTED(00000003)
depth=1 /C=DE/ST=Bavaria (Bayern)/O=Klaus Tachtler/CN=tachtler.net/emailAddress=postmaster@tachtler.net
verify error:num=19:self signed certificate in certificate chain
verify return:0
---
Certificate chain
 0 s:/C=DE/ST=Bavaria (Bayern)/L=Munich (Muenchen)/O=Klaus Tachtler/CN=mx1.tachtler.net/emailAddress=postmaster@tachtler.net
   i:/C=DE/ST=Bavaria (Bayern)/O=Klaus Tachtler/CN=tachtler.net/emailAddress=postmaster@tachtler.net
 1 s:/C=DE/ST=Bavaria (Bayern)/O=Klaus Tachtler/CN=tachtler.net/emailAddress=postmaster@tachtler.net
   i:/C=DE/ST=Bavaria (Bayern)/O=Klaus Tachtler/CN=tachtler.net/emailAddress=postmaster@tachtler.net
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDEzCCAnygAwIBAgIBATANFgkqhkiG9w0BAQUFADCBgDELMAkGA1UEBhMCREUx
GTAXBgXVBAgTEEJhdmFyaWEgKEJheWVybikxFzAVBgNVBAoTDktsYXVzIFRhY2h0
bGVyMRUwEwYDVQQDEwx0YWNodGxlci5uZXQxJjAkBgkqhkiG9w0BCQEWF3Bvc3Rt
YXN0ZXJAdGFjaHRsZXIubmV0MB4XDTA5MDMyMzE1MTAzN1oXDTEwMDMyMzE1MTAz
N1owgaAxCzAJBgNVBA3TAkRFMRkwFwYDVQQIExBCYXZhcmlhIChCYXllcm4pMRow
GAYDVQQHExFNdW5pY2ggKE11ZW5jaGVuKTEXMBUGA1UEChMOS2xhdXMgVGFjaHRs
ZXIxGTA6BgNVBAMTEG14MS50YWNodGxlci5uZXQxJjAkBgkqhkiG9w0BCQEWF3Bv
c3RtYXN0ZXJAdGFjaHRsZXIubmV0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
gQDEnsmVSlC3Xa9Qm9CXN9WS5/iSRpCvVGi75UOAPdTIrlMFKIbXgKADWjTwhFJ6
DOfGwNM4blUML24sIQGaZig0YtUMfAaZ43iz8pMjil2Jr/NpKx+LRYOwfhtRqe/o
gJupfNIkNJDxNFxQ4GyzZ0+raGUhEQSj3CZ0Nfh1Sfg83QIDAQABo3sweTAJBgNV
HRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZp
Y2F0ZTAdBgNVHQ4EFgAUAYSWlHDqJ9iuNE+giD1QmjKNxqgwHwY8VR0jBBgwFoAU
RwKfeFYvgjTk7bkpQohtM0xCIuswDQYJKoZIhvcNAQEFBQADgYEAs+TTfVUNfKYm
rKSzJ9QTYZgLzvTOmYfaQ+5lOZVjzL6q063geKLVQXa6Q7F8Z30ojwHyDPNz3OgY
oLX/OddU4ERUpYkrbkXKdQRESmAR7JTvU5OuubdqWMiX0XYd62qTff36CQDY4wdd
voW8WQQQro0GUe4o1lb66VaoNHPdYQc=
-----END CERTIFICATE-----
subject=/C=DE/ST=Bavaria (Bayern)/L=Munich (Muenchen)/O=Klaus Tachtler/CN=mx1.tachtler.net/emailAddress=postmaster@tachtler.net
issuer=/C=DE/ST=Bavaria (Bayern)/O=Klaus Tachtler/CN=tachtler.net/emailAddress=postmaster@tachtler.net
---
No client certificate CA names sent
---
SSL handshake has read 2183 bytes and written 341 bytes
---
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : DHE-RSA-AES256-SHA
    Session-ID: 1B33AC34E90CD7EA8F237E7EC502C954B83A975A4DE0C52254F567FF14E83A84
    Session-ID-ctx: 
    Master-Key: AE5349DD78CBCAECC16C68F81D341E7607ACE5D4D268E121F0E1F1A2B6CD3E36712D71A4D0490B64975781CDB133A3B9
    Key-Arg   : None
    Krb5 Principal: None
    Start Time: 1237825400
    Timeout   : 300 (sec)
    Verify return code: 19 (self signed certificate in certificate chain)
---
220 mx1.tachtler.net ESMTP Postfix
QUIT
DONE

TLS-Test via Evolution-Mailer

Hier noch ein zweiter Test via Evolution-Mailer, wobei hier das Certificate - welches ja selbst signiert ist, einmal in einem kleinen Dialogfenster, wie hier gezeigt:

Warning-Dialog TLS-Certificate Evolution-Mailer

akzeptiert wurde.

Die Ensprechende e-Mail hat dann folgenden Quelltext:

Return-Path: <postmaster@tachtler.net>
Received: from murder ([unix socket])
	 by nss.tachtler.net (Cyrus v2.3.7-Invoca-RPM-2.3.7-2.el5) with LMTPA;
	 Mon, 23 Mar 2009 21:23:19 +0100
X-Sieve: CMU Sieve 2.3
X-Virus-Scanned: amavisd-new at tachtler.net
X-Amavis-Modified: Mail body modified (using disclaimer) by
	amavis.tachtler.net
Received: from mx1.tachtler.net ([127.0.0.1])
	by localhost (amavis.tachtler.net [127.0.0.1]) (amavisd-new, port 10024)
	with ESMTP id Twq3LL8UzmvZ for <postmaster@tachtler.net>;
	Mon, 23 Mar 2009 21:23:17 +0100 (CET)
Received: from [192.168.0.99] (testlaptop.tachtler.net [192.168.0.99])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested)
	by mx1.tachtler.net (Postfix) with ESMTP
	for <postmaster@tachtler.net>; Mon, 23 Mar 2009 21:23:17 +0100 (CET)
Subject: Test TLS e-Mail
From: Klaus Tachtler <postmaster@tachtler.net>
To: postmaster@tachtler.net
Content-Type: text/plain; charset=UTF-8
Date: Mon, 23 Mar 2009 21:22:26 +0100
Message-Id: <1237839746.9028.0.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.12.3 (2.12.3-8.el5_2.3) 
Content-Transfer-Encoding: 8bit

Hallo,

Test TLS e-Mail...

Grüße Klaus.
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/postfix_tls_einsetzen.txt · Zuletzt geändert: 2018/02/09 13:13 von klaus