Inhaltsverzeichnis
Dovecot SSL/TLS
Diese Dokumentation ist nach dem Kurs: Dovecot bei www.heinlein-support.de - Peer Heinlein entstanden. Hier noch einmal meinen Dank für die Informationen und das ☛ Buch: Dovecot ☚ |
HINWEIS - Die Nachfolgende Konfiguration von Dovecot setzt eine lauffähige Installation von Dovecot voraus, wie unter nachfolgendem internen Link beschrieben !!!
Dovecot ist ein Open-Source-IMAP-und POP3-E-Mail-Server für Linux bzw. UNIX-ähnlichen Systeme, entwickelt mit dem Hauptaugenmerk auf Sicherheit. Dovecot ist eine ausgezeichnete Wahl für kleine und große Installationen. Dovecot ist schnell und einfach zu installieren, erfordert keine besonderen Voraussetzungen und ist Ressourcenschonend.
Dovecot wird von Timo Sirainen entwickelt.
Beschreibung | Externer Link |
---|---|
Homepage | http://dovecot.org |
Dokumentation | http://dovecot.org/documentation.html |
Wiki Dovecot2 | http://wiki2.dovecot.org/ |
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:
Vorbereitung
Der Einsatz von SSL/TLS ist unter Dovecot ähnlich leicht zu realisieren, wie dies z.B. beim Apache Webserver der Fall ist.
Grundsätzlich kann auch ein Self-signed Certificate (Selbst erstelltes und bestätigtes Zertifikat) dafür benutzt werden. Wie ein solches Zertifikat selbst erstellt werden, kann kann etwas ausführlicher unter nachfolgendem internen Links nachgelesen werden.
Zertifikat erstellen
Trotzdem soll hier in aller Kürze ein Self-signed Certificate erstellt werden, was mit nachfolgendem Befehl durchgeführt werden kann:
# openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -subj /CN=mail.tachtler.net -keyout /tmp/mail.tachtler.net.key -out /tmp/mail.tachtler.net.crt
Anschließend sollten im Verzeichnis /tmp
die nachfolgend genannten beiden Dateien liegen
/tmp/mail.tachtler.net.key
- SSL/TLS-Schlüssel-Datei/tmp/mail.tachtler.net.crt
- SSL/TLS-Zertifikats-Datei
Ob die Datein richtig erstellt worden sind, kann mit nachfolgendem Befehl überprüft werden:
# ll /tmp/mail.tachtler.net.* -rw-r--r-- 1 root root 1115 Mar 24 15:20 /tmp/mail.tachtler.net.crt -rw-r--r-- 1 root root 1708 Mar 24 15:20 /tmp/mail.tachtler.net.key
Wie das Zertifikat inhaltlich ausgestellt wurde, kann mit dem folgenden Befehl überprüft werden:
# openssl x509 -noout -text -in /tmp/mail.tachtler.net.crt Certificate: Data: Version: 3 (0x2) Serial Number: 11521682945659409234 (0xa008d4934c7avaa2) Signature Algorithm: sha1WithRSAEncryption Issuer: CN=mail.tachtler.net Validity Not Before: Mar 23 14:20:59 2014 GMT Not After : Mar 20 14:20:59 2024 GMT Subject: CN=mail.tachtler.net Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:d3:f2:34:76:ee:75:b4:b0:b2:92:a0:7e:53:3b: cc:b2:c5:3d:d5:b0:42:20:16:29:a1:96:f5:d6:47: d7:dd:1c:9a:9a:33:b6:f0:67:8e:15:f8:ca:b3:16: 9f:85:1a:b8:e5:72:a0:30:c7:12:0a:58:f9:60:d0: 15:0a:38:87:17:5a:41:d7:c3:70:04:5e:77:a0:bf: 50:2b:11:8d:fa:2b:3b:1c:da:e0:2a:16:79:5b:54: ac:c3:9e:a9:52:78:50:5a:6c:bb:09:79:64:47:de: ef:41:91:f8:dc:b7:a6:3f:12:02:9e:d8:28:60:e1: dd:d7:5b:9a:e5:84:bb:c0:40:62:fb:bb:e5:87:17: 71:d4:39:5a:43:32:ed:2d:13:41:73:73:7d:2c:71: a2:da:de:51:83:bd:70:18:65:37:6a:3e:75:43:d9: 4e:1d:36:34:1f:c3:4a:b6:4e:8d:32:da:b0:04:a3: df:c5:b9:3a:6f:85:84:93:96:a2:e4:34:75:70:a2: 30:99:46:8e:cd:cf:da:7e:09:6e:b3:89:a1:dd:43: af:ff:0a:8d:94:e4:1d:2b:3b:95:23:4c:b5:f8:77: 7a:e3:60:46:a8:d2:f6:e8:dc:db:36:f5:ae:47:f9: dd:68:25:bd:80:ac:dd:6f:c4:d6:3d:9e:0d:78:79: 1f:d5 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Subject Key Identifier: F6:5E:43:5D:CB:BB:BE:6C:EE:D8:46:B1:13:3A:27:5E:14:4B:F1:25 X509v3 Authority Key Identifier: keyid:F6:5E:48:5D:CB:BC:BE:6C:BD:D8:76:B1:13:3A:27:5E:14:4B:F1:25 X509v3 Basic Constraints: CA:TRUE Signature Algorithm: sha1WithRSAEncryption 65:cc:20:e9:cc:01:fd:8e:d9:4d:61:f4:70:f3:c7:5e:ef:9b: 7f:d8:db:4c:d6:46:40:34:da:b4:b0:9a:12:05:02:df:3b:37: ea:09:7d:8e:c0:c0:ca:f7:4e:59:20:63:d8:26:b2:81:ed:85: f5:1d:9e:7b:28:59:42:1d:8a:f5:e1:a7:a8:ad:81:dc:93:46: 85:c8:2b:4f:05:c9:64:77:b1:76:39:d5:8d:91:b8:65:03:a4: 50:c0:19:a8:03:48:4d:70:33:81:45:a4:12:6b:c6:06:39:98: 92:1f:4c:ec:40:97:22:a7:8e:17:ce:19:53:47:6f:05:0e:f5: cb:e6:a5:a2:a9:3a:61:b1:0a:07:f2:51:b1:d1:19:2c:b5:82: 95:3f:a7:8e:3c:e7:01:0f:ad:60:c3:7e:a5:bf:a8:11:6b:73: 84:0d:e2:06:f1:01:48:e1:72:f8:30:58:09:66:20:c1:a4:ce: c0:3d:23:12:7f:4f:35:2a:f2:54:01:5e:99:06:c5:77:45:e5: 00:da:4a:28:b2:fd:b0:62:77:eb:05:fe:2a:53:30:ce:de:4f: dd:18:8f:9d:3c:27:8f:e6:22:f4:ec:fd:f5:15:81:af:5e:53: d5:a7:31:52:16:90:e0:e8:00:21:7d:53:d0:64:60:23:99:23: 8e:92:51:77
Anschließend sollte der Speicherort für die SSL/TLS-Schlüssel-Datei und die SSL/TLS-Zertifikats-Datei gewählt werden, welcher standardmäßig die Verzeichnisse
/etc/pki/dovecot/certs/
und/etc/pki/dovecot/private
sind.
Mit nachfolgenden Befehlen können nun die Dateien in das jeweils richtige Verzeichnis kopiert werden:
# mv /tmp/mail.tachtler.net.crt /etc/pki/dovecot/certs/ # mv /tmp/mail.tachtler.net.key /etc/pki/dovecot/private/
Anschließend sollten nun die Dateirechte der SSL/TLS-Schlüssel-Datei wie nachfolgend beschrieben durchgeführt werden:
# chmod 400 /etc/pki/dovecot/private/mail.tachtler.net.key
Zum Abschluß kann mit nachfolgendem Befehl berprüft werden, ob die Dateien im jeweils richtigen Verzeichnis gelandet sind und die richtigen dateirechte haben:
# ls -l /etc/pki/dovecot/* -rw-r--r-- 1 root root 496 Mar 14 2013 /etc/pki/dovecot/dovecot-openssl.cnf /etc/pki/dovecot/certs: total 8 -rw------- 1 root root 847 Mar 13 17:43 dovecot.pem -rw-r--r-- 1 root root 1115 Mar 23 15:20 mail.tachtler.net.crt /etc/pki/dovecot/private: total 8 -rw------- 1 root root 916 Mar 13 17:43 dovecot.pem -r-------- 1 root root 1708 Mar 23 15:20 mail.tachtler.net.key
Konfiguration
Nachfolgende Konfigurationen sind notwendig, um einen SSSL/TLS gesicherten Dovecot zu betreiben.
/etc/dovecot/conf.d/10-ssl.conf
In dieser Konfigurationsdatei werden die Parameter für die Verschlüsselung SSL/TLS festgelegt.
Die in der vorhergehenden Konfiguration, welche unter nachfolgendem internen Link nachzulesen ist
kann jetzt wiederum angepasst werden.
ssl
Diese Definition aktiviert, deaktiviert und erzwingt den Zugriff von Rechnern, außer localhost
, zur Verwendung von SSL/TLS-verschlüsselte Verbindung
Solange noch keine SSL/TLS-Konfiguration konfiguriert war, konnte zum testen auch das Anmelden an Dovecot, auch bei einer nicht SSL/TLS-verschlüsselten Verbindung temporär erlaubt werden, von anderen Rechnern zuzugreifen.
(Nur relevanter Ausschnitt):
... # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> # disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps # plain imap and pop3 are still allowed for local connections # Tachtler # default: ssl = required ssl = no ...
Als Zwischenschritt, kann die SSL/TLS-Verschlüsselung aktiviert werden, jedoch noch nicht zwingend eingefordert werden, was mit nachfolgenden Einstellung möglich ist.
(Nur relevanter Ausschnitt):
... # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> # disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps # plain imap and pop3 are still allowed for local connections # Tachtler # default: ssl = required ssl = yes ...
Falls SSL/TLS-Verschlüsselung realisiert wurde und die Testphase abgeschlossen ist, sollte die Konfiguration wie folgt aussehen.
(Nur relevanter Ausschnitt):
... # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> # disable plain pop3 and imap, allowed are only pop3+TLS, pop3s, imap+TLS and imaps # plain imap and pop3 are still allowed for local connections ssl = required ...
ssl_cert & ssl_key
Die nachfolgenden beiden Einstellungen laden den Inhalt der SSL/TLS-Schlüssel-Datei und die SSL/TLS-Zertifikats-Datei beim Start von Dovecot dynamisch in die Konfiguration, was den Vorteil hat, dass auch in chroot
-Umgebungen nach dem starten und die Übergabe an einen etwaigen Laufzeit-Benutzer, keine Zugriff-Probleme mehr entstehen.
...
# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
# dropping root privileges, so keep the key file unreadable by anyone but
# root. Included doc/mkcert.sh can be used to easily generate self-signed
# certificate, just make sure to update the domains in dovecot-openssl.cnf
# Tachtler
# default: ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_cert = </etc/pki/dovecot/certs/mail.tachtler.net.crt
# Tachtler
# default: ssl_key = </etc/pki/dovecot/private/dovecot.pem
ssl_key = </etc/pki/dovecot/private/mail.tachtler.net.key
...
ssl_dh_parameters_length
Aufgrund einer Sicherheitsschwäche beim „Handshake“ im Diffie-Hellmann-Algorithmus sollten die Stärke der möglichen Verschlüsselungs-Parameter entsprechend angepasst werden:
... # DH parameters length to use. # Tachtler # Diffie-Hellmann vulnerability # https://weakdh.org/sysadmin.html # default: #ssl_dh_parameters_length = 1024 ssl_dh_parameters_length = 2048 ...
ssl_protocols
Zur Absicherung sollten die verwendeten Protokolle, durch nachfolgende Änderung angepasst werden, um keine kompromittierten Protokolle zur Verwendung zu bringen:
... # SSL protocols to use # Tachtler # default: #ssl_protocols = !SSLv2 ssl_protocols = !SSLv2 !SSLv3 ...
HINWEIS - Keine Änderungen im Parameter ssl_cipher_list
durchführen, da dies zu einem Fehler beim TLS-Handschake führt, da SSLv3
hier nicht zur Verwendung kommt!
ssl_cipher_list
Aufgrund einer Sicherheitsschwäche beim „Handshake“ im Diffie-Hellmann-Algorithmus sollten die Liste der möglichen Verschlüsselungs-Algorithmen entsprechend angepasst werden:
... # SSL ciphers to use # Tachtler # Diffie-Hellmann vulnerability # https://weakdh.org/sysadmin.html # default: #ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL # original from https://weakdh.org/sysadmin.html: ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA # Tachtler - changed order, to use first ECDHE-RSA-AES256-GCM-SHA384 / ECDHE-ECDSA-AES256-GCM-SHA384! ssl_cipher_list = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA ...
ssl_prefer_server_ciphers
Aufgrund einer Sicherheitsschwäche beim „Handshake“ im Diffie-Hellmann-Algorithmus sollten die Liste der Verschlüsselungs-Algorithmen die der Dovecot-Server dem Client vorschlägt, Anwendung finden und dem Client nicht die Möglichkeit gegeben werden, entsprechende „downgrades“ der Verschlüsselungs-Algorithmen dem Dovecot-Server vorzuschlagen. Nachfolgende Anpassungen sind dazu notwendig:
... # Prefer the server's order of ciphers over client's. # Tachtler # Diffie-Hellmann vulnerability # https://weakdh.org/sysadmin.html # default: #ssl_prefer_server_ciphers = no ssl_prefer_server_ciphers = yes ...
/etc/dovecot/conf.d/10-auth.conf
In dieser Konfigurationsdatei werden die Parameter für die Authentifizierung festgelegt.
Die in der vorhergehenden Konfiguration, welche unter nachfolgendem internen Link nachzulesen ist
kann später auch angepasst werden.
disable_plaintext_auth
Diese Definition erlaubt oder verbietet den Zugriff von Rechnern, außer localhost
, das Anmelden mit den Methoden
- PLAIN
- LOGIN
wenn, keine SSL/TLS-verschlüsselte Verbindung genutzt wird.
Solange noch keine SSL/TLS-Konfiguration konfiguriert war, konnte zum testen auch das Anmelden an Dovecot mit oben genannten Methoden, auch bei einer nicht SSL/TLS-verschlüsselten Verbindung temporär erlaubt werden, von anderen Rechnern zuzugreifen.
(Nur relevanter Ausschnitt):
... # Disable LOGIN command and all other plaintext authentications unless # SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP # matches the local IP (ie. you're connecting from the same computer), the # connection is considered secure and plaintext authentication is allowed. # See also ssl=required setting. # Tachtler - temporary - # default: #disable_plaintext_auth = yes disable_plaintext_auth = no ...
Falls SSL/TLS-Verschlüsselung realisiert wurde und die Testphase abgeschlossen ist, sollte die Konfiguration wie folgt aussehen.
(Nur relevanter Ausschnitt):
... # Disable LOGIN command and all other plaintext authentications unless # SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP # matches the local IP (ie. you're connecting from the same computer), the # connection is considered secure and plaintext authentication is allowed. # See also ssl=required setting. #disable_plaintext_auth = yes ...
Neustart
Bevor der der dovecot
-Daemon/Dienst neu gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen
# doveconf -n # 2.2.18: /etc/dovecot/dovecot.conf # OS: Linux 3.10.0-229.7.2.el7.x86_64 x86_64 CentOS Linux release 7.1.1503 (Core) auth_debug = yes auth_debug_passwords = yes auth_master_user_separator = * auth_mechanisms = plain digest-md5 cram-md5 login auth_verbose = yes listen = * mail_debug = yes mail_location = maildir:~/Maildir mbox_write_locks = fcntl namespace inbox { inbox = yes location = mailbox Drafts { special_use = \Drafts } mailbox Junk { special_use = \Junk } mailbox Sent { special_use = \Sent } mailbox "Sent Messages" { special_use = \Sent } mailbox Trash { special_use = \Trash } prefix = INBOX/ separator = / } passdb { args = /etc/dovecot/master-users driver = passwd-file master = yes pass = yes } passdb { args = scheme=CRYPT username_format=%u /etc/dovecot/users driver = passwd-file } protocols = imap lmtp service lmtp { inet_listener lmtp { address = 192.168.0.80 port = 24 } } ssl_cert = </etc/pki/dovecot/certs/mail.tachtler.net.crt ssl_cipher_list = ssl_cipher_list = ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA ssl_dh_parameters_length = 2048 ssl_key = </etc/pki/dovecot/private/mail.tachtler.net.key ssl_prefer_server_ciphers = yes ssl_protocols = !SSLv2 !SSLv3 userdb { args = username_format=%u /etc/dovecot/users driver = passwd-file } verbose_proctitle = yes
HINWEIS - die Konfiguration des dovecot
-Daemon/Dienst konnte korrekt gelesen werden, wenn die Konfiguration erscheint, was letztendlich zwar nicht bedeutet, das Sie auch korrekt ist, aber syntaktische Fehler ausschließt !!!
Danach kann der dovecot-Server mit nachfolgendem Befehle neu gestartet werden:
# service dovecot restart Stopping Dovecot Imap: [ OK ] Starting Dovecot Imap: [ OK ]
bzw.
# systemctl restart dovecot
Login-Test mit telnet
Um zu Überprüfen, ob eine Anmeldung unter Nutzung von SSL/TLS (hier STARTTLS) möglich ist, kann nachfolgender Befehl genutzt werden:
# openssl s_client -starttls imap -connect mail.tachtler.net:143 CONNECTED(00000003) depth=0 CN = mail.tachtler.net verify error:num=18:self signed certificate verify return:1 depth=0 CN = mail.tachtler.net verify return:1 --- Certificate chain 0 s:/CN=mail.tachtler.net i:/CN=mail.tachtler.net --- Server certificate -----BEGIN CERTIFICATE----- MIIDCzCCAfOgAwIBAgIJAKAIxJZMesrSMA0GCSqGSIb3DQEBBQUAMBwxGjAYBgNV BAMMEW1haWwudGFjaHRsZXIubmV0MB4XDTE0MDMyNDE0MjA1OVoXDTI0MDMyMTE0 MjA1OVowHDEaMBgGA1UEAwwRbWFpbC50YWNodGxlci5uZXQwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDT8jR27nW0sLKSoH5TO8yyxT3VsEIgFimhlvXW R9fdHJqaM7bwZ44V+MqzFp+FGrklcuAwxxIKWPlg0BUKOIcXWkHXw3AEXnegv1Ar EY36Kzsc2uAqFnlbVKzDnqlSeFBabLsJeWRH3u9Bkfjct9Y/EgKe2Chg4d3XW5Pl hLvAQGL7u+WHF3HUOVpDMu0tE0Fzc30scaLa3lGDvXAYZTdqPnVD2U4dNjQfw0q2 To0y2rAEo9/FuTpvhYSTlqLkNHBwojCZRo7Nz9p+CW6ziaHdQ6//Co+U5B27O5Uj TLX4d3rjYEao0vbo3Ns29a5H+d1oJb2ArN1vxNY9ng14eR/VAgMBAAGjUDBOMB0G A1UdDgQWBBT2XkNdy7u+CO3YdrETOideFEvxJTAfBgNVHSMEGDAWgBT2XkNdy7u+ bO3YdrETOideFEvxJTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQBl zCDpzAH9jtlNYfRw88de75t/2NtM1kZANNq0sJoSBQLfOzfqCX2OwMDK905ZIGPY JrKB7YX1HZ57KFlCHYr1LaeorYHck0aFyCtPBclkd7F2GdWNkbhlA6RQwBmoA+hN cDOBRaQSa8YGOZiSH0zsQJcip44XzhlTRM8FDvXL5qWiqRphsQoH8lGx0RkstYKV P6eOPOcBD61gw36lv6gRa3OEDeIG8QFI4XL4MFgJZiDBpM7APSMSf081KvJUAV6Z BsV3ReUA2koosv2wYnfrBf4qUzDO3k/dGF+dPCeP5iL07P31FYGvXlPVpzFSFnDg 6AAhfVPQZGAjmSOOklF3 -----END CERTIFICATE----- subject=/CN=mail.tachtler.net issuer=/CN=mail.tachtler.net --- No client certificate CA names sent --- SSL handshake has read 1937 bytes and written 479 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-GCM-SHA384 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : DHE-RSA-AES256-GCM-SHA384 Session-ID: C8D0D0B5E0E8EC6F4389C162E024AED84DEF6928C457393C746AD93C353C43E2 Session-ID-ctx: Master-Key: AB3DAEB39A8B531B7BDEF2E1EA874E4D5DE497EB6997C4519306700DCAF3ADE65516C7F99DA69495 21228D7AFAC8CA64 Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - c8 a6 6c 37 94 e0 0b 5b-01 e5 54 c8 90 5f f1 62 ..l7...[..T.._.b 0010 - 4a ca 03 8f f6 19 bc 31-1e de bb 60 89 aa 35 50 J..c...1...`..5P 0020 - 20 3f 67 a0 d5 5f 09 9c-62 37 ac 73 e8 45 21 0e ?g.._..b2.s.E!. 0030 - 7a 83 8e b9 61 3b 90 ac-92 1a 7f e8 4a a9 24 40 z...aK......J.$@ 0040 - a9 8b d4 a3 75 ef 9f 67-32 58 75 1f 3c 24 bf 64 ....u..g2Yu.<$.d 0050 - 0b c8 2a 85 aa f2 0e a7-33 69 99 64 9a b7 cf f6 ..*.4...3i.d.... 0060 - 4f 97 b0 17 24 46 cd 1e-37 da c6 ae df 0d 86 75 O...$F..7......u 0070 - 7b 0e 35 d2 af c2 91 6a-f9 60 28 33 3f a3 21 df {.5....j.`(3?.!. 0080 - ae ae 40 63 96 1f 7f af-ec 1f 8a 5c 7e b2 4a 0f ..@c...5...\~.J. 0090 - d3 0a 17 06 dc c1 5f b4-11 be f4 ee 8e fc 3b f8 ......_...x...;. Start Time: 1395675234 Timeout : 300 (sec) Verify return code: 18 (self signed certificate) --- . OK Pre-login capabilities listed, post-login capabilities have more. a1 login klaus@tachtler.net geheim * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS SPECIAL-USE BINARY MOVE a1 OK Logged in a2 list "" "*" * LIST (\HasChildren) "/" INBOX a2 OK List completed (0.000 secs). a3 logout * BYE Logging out a3 OK Logout completed. closed
Erforderliche Benutzereingaben:
openssl s_client -starttls imap -connect mail.tachtler.net:143
oder IP-Adresse
openssl s_client -starttls imap -connect 192.168.0.80:143
a1 login klaus@tachtler.net geheim
a2 list "" "*"
a3 logout
Eigene CA / CAcert
Bei Verwendung eines Zertifikats von einer eigenen CA oder von CACert, wie das in Firmen z.B. der Falls ist, müssen alle Zertifikate einer Zertifikatskette in umgekehrter Reihenfolge in eine einzelne Datei importiert werden.
Nachfolgendes Beispiel zeigt wie
in genau dieser Reihenfolge in eine einzelne Datei importiert werden.
Schritt 1 - *.tachtler.net-Zertifikat importieren:
# cat CAcert-wildcard-tachtler.net.crt > CAcert-class3-wildcard_all_in_one.crt
Schritt 2 - Intermediate-Zertifikat importieren:
# cat CAcert_intermediate.pem >> CAcert-class3-wildcard_all_in_one.crt
Schritt 3 - Root-Zertifikat importieren:
cat CAcert_root.pem >> CAcert-class3-wildcard_all_in_one.crt
Login-Test mit telnet
Eine Überprüfung, ob eine Anmeldung unter Nutzung von SSL/TLS bei Verwendung einer Zertifikatskette nun genau so wie ein einzelnes Self-signed Certificate als ebenfalls Self signed erkannt wird, kann mit nachfolgendem Befehl durchgeführt werden: (Es wird nur ein Verbindung, ohne abgeschlossenen login
aufgebaut)
# openssl s_client -starttls imap -connect 192.168.0.80:143 CONNECTED(00000003) depth=2 O = Root CA, OU = http://www.cacert.org, CN = CA Cert Signing Authority, emailAddress = support@cacert.org verify error:num=19:self signed certificate in certificate chain verify return:0 --- Certificate chain 0 s:/CN=*.tachtler.net i:/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root 1 s:/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root i:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org 2 s:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org i:/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org --- Server certificate -----BEGIN CERTIFICATE----- MIIE6jCCAtKgAwIBAgIDAi2HMA0GCSqGSIb3DQEBDQUAMFQxFDASBgNVBAoTC0NB Y2VydCBJbmMuMR4wHAYDVQQLExVodHRwOi8vd3d3LkNBY2VydC5vcmcxHDAaBgNV BAMTE0NBY2VydCBDbGFzcyAzIFJvb3QwHhcNMTQwNDEwMTg1MjI5WhcNMTYwNDA5 MTg1MjI5WjAZMRcwFQYDVQQDFA4qLnRhY2h0bGVyLm5ldDCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAPIpr+FMiLXlHD+z6n/Uc0GRVZs3HcYKpj4puYWp i/vgkZzJM7+YBgL8qXSeoAGRXttzk9s0LdjclLjF995ZKKsgcpVfWdF5GH97wzCY ZStQR19PWtSXauKVzTvWC8Kh2ZZkanr/0t7MtqBdJdxXHJhZIuA4Q9jiSWVggzx/ XoAbxdJNZHnZsyG3fptkwXFK/nyjEyBL+Z7kYObXcUP7psh3EZzn1bn6oss95oyr LQyubzRhJArEo9Josqtyh1cAgnvoesPQlbA+BxtJ9LoO94BfKwFw9Mw5Gnbhwbjx sgruuh+Ml8CZyFfbF9HsWRuRa1syRxIEzA+U01Lp3p0/uhUCAwEAAaOB/zCB/DAM BgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIDqDA0BgNVHSUELTArBggrBgEFBQcD AgYIKwYBBQUHAwEGCWCGSAGG+EIEAQYKKwYBBAGCNwoDAzAzBggrBgEFBQcBAQQn MCUwIwYIKwYBBQUHMAGGF2h0dHA6Ly9vY3NwLmNhY2VydC5vcmcvMDgGA1UdHwQx MC8wLaAroCmGJ2h0dHA6Ly9jcmwuY2FjZXJ0Lm9yZy9jbGFzczMtcmV2b2tlLmNy bDA3BgNVHREEMDAugg4qLnRhY2h0bGVyLm5ldKAcBggrBgEFBQcIBaAQDA4qLnRh Y2h0bGVyLm5ldDANBgkqhkiG9w0BAQ0FAAOCAgEAZqJtMOD7OVEb6VYhG6y8XEKg 9zgrvw+jDyAD6ehagA9SESCwFyfAsFYDe/2yclEqsmdAaBlRXY66pIZ98y/3vmZQ U1+TZ8TK6XoOku9TL1gZE/AOELdvMlFihtgnzj9mSaacEWgmvOoY9ELdDNpKQfHp JBEpOJcVvYpboFt2+LB0xlSCbz8+9ZCplOTX/awD395OMFuDFLNobglrDJwXpD94 AZfTRUN2jOhXV2EUe+yyjVVVr2WhGM07pIafHhYhQalXzLIIY416O/NtCfOl9lCT tzojDyeVdqtyeBMcDObPKCrOMy7dwQoF2EifcieCODS/7CCihVOz/cIV6j9mCL6I d/HblAQnUzGnYmUAfLje79t6PA/BVOOg2TE27rDqsmDxfj6+DbjiR8WRquzmBgda pp5I/mu7KB7ch4vnUJvMsAu5yvQ178syBUbadhRy3lsldpcTgwajMCyev2+7csRK dyKFk9l+FPxtu0frGm6CSKsxL+773PN7DTooYG2451hNBnQvk/SKt5AbknMQt3FV tqmIE4n7zenrehItSZocMdd3FHA6K6OKkWeDv1O6qL0bgVY7Yb8pCn2+/O2jux3z uZweHc6zFhfg8IfTL6MOlfZSWlMU+q452vIXnoLVIWyLgmLGcZyVgXaumCVXopMv 1L95vruMaWTlXcGVYQg= -----END CERTIFICATE----- subject=/CN=*.tachtler.net issuer=/O=CAcert Inc./OU=http://www.CAcert.org/CN=CAcert Class 3 Root --- No client certificate CA names sent Server Temp Key: ECDH, prime256v1, 256 bits --- SSL handshake has read 6060 bytes and written 401 bytes --- New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES128-GCM-SHA256 Server public key is 2048 bit Secure Renegotiation IS supported Compression: NONE Expansion: NONE SSL-Session: Protocol : TLSv1.2 Cipher : ECDHE-RSA-AES128-GCM-SHA256 Session-ID: 63A349AEDB6241A498691620C64089697548C10946B471201F68D0227B198566 Session-ID-ctx: Master-Key: 18629B8684C43ACBCE6477544EAC0A6996F0829297A76FEC5CE4A81634A4964AF8142960875A55E9EA7E27B7CFBED769 Key-Arg : None Krb5 Principal: None PSK identity: None PSK identity hint: None TLS session ticket lifetime hint: 300 (seconds) TLS session ticket: 0000 - 51 bf 00 ed 77 92 bf 24-67 b1 a6 7f 45 76 ff 65 Q...w..$g...Ev.e 0010 - ef e3 dd 3d 35 db ff fd-eb fa f4 76 84 0e e7 9c ...=5......v.... 0020 - 0c 8a 65 50 b8 de d6 95-32 e9 4e 8c 3c 9a a4 b3 ..eP....2.N.<... 0030 - 5f 83 d4 25 c4 d2 05 c7-1d 14 54 ac 75 8c 90 b7 _..%......T.u... 0040 - 48 42 4d 79 52 bc 64 dc-55 54 43 59 3e 7b cf d9 HBMyR.d.UTCY>{.. 0050 - 3c 8e ae c1 c2 33 9d 27-48 7d af 84 8d fc 0b c2 <....3.'H}...... 0060 - a6 4e 7c 2e ec b4 9f 18-95 dc 64 8b 23 de d9 10 .N|.......d.#... 0070 - 40 2e 04 9f 02 ce 3b 61-d4 6d 31 63 33 5e 9f 9c @.....;a.m1c3^.. 0080 - 65 e4 73 7e b6 26 13 2c-ee 4c b6 e1 2d d4 75 45 e.s~.&.,.L..-.uE 0090 - f3 cd 5d 09 af 44 cb e6-7f ad 19 84 76 58 73 f5 ..]..D......vXs. Start Time: 1436445698 Timeout : 300 (sec) Verify return code: 19 (self signed certificate in certificate chain) --- . OK Pre-login capabilities listed, post-login capabilities have more. a1 logout * BYE Logging out a1 OK Logout completed. closed
Erforderliche Benutzereingaben:
openssl s_client -starttls imap -connect 192.168.0.80:143
a1 logout