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