Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mail_c7:dovecot_4 [25.07.2014 19:32. ] – [Schlüssel für das Serverzertifikat erzeugen] djangocentos:mail_c7:dovecot_4 [22.07.2019 14:48. ] (aktuell) – [Links] django
Zeile 141: Zeile 141:
 </code> </code>
  
-==== Cipher-Suites und Diffie-Hellmann ====+==== Cipher-Suites und Diffie-Hellman ====
 Möchte man in Erfahrung bringen, welche Cipher-Suites((Sammlung von standardisierten kryptographischer Algorithmen)) unser installiertes OpenSSL-Paket mitbringt, können wir wie folgt abfragen((Ausgabe in formatierter Tabelle)). Möchte man in Erfahrung bringen, welche Cipher-Suites((Sammlung von standardisierten kryptographischer Algorithmen)) unser installiertes OpenSSL-Paket mitbringt, können wir wie folgt abfragen((Ausgabe in formatierter Tabelle)).
    # openssl ciphers -v    # openssl ciphers -v
Zeile 682: Zeile 682:
  
 <html><pre class="code"> <html><pre class="code">
-<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">openssl rsa <cakey.pem >cakey_ohne_passphrase.pem</font>+<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">openssl rsa &lt;cakey.pem &gt;cakey_ohne_passphrase.pem</font>
 </pre></html> </pre></html>
 <html><pre class="code"> <html><pre class="code">
Zeile 690: Zeile 690:
  
 Auch hier sind die Eingaben sind in der Farbe <html><font style="color: rgb(0, 0, 255)">blau</font></html>, sowie die Rückmeldungen in der Farbe <html><font style="color: rgb(0, 255, 0)">grün</font></html> gekennzeichnet. Auch hier sind die Eingaben sind in der Farbe <html><font style="color: rgb(0, 0, 255)">blau</font></html>, sowie die Rückmeldungen in der Farbe <html><font style="color: rgb(0, 255, 0)">grün</font></html> gekennzeichnet.
-==== Schlüssel für das Serverzertifikat erzeugen ==== 
-Nachdem wir nun unsere eigene CA erstellt haben, machen wir uns daran, endlich für unseren Server ein Zertifikat herausgeben. Hierzu erzeugen wir als erstes einen 4096 Bit langen RSA Schlüssel, den wir mit AES 256 verschlüsselt auf der Platte abgelegt lassen. Da OpenSSL keine leere Passphrase zulässt braucht die Passphrase diesmal nicht sonderlich geheim sein, da wir diese im Anschluss ohnehin sofort wieder entfernen werden. Alternativ können wir natürlich auch eine Passphrase vergeben und dieses Passwort dann in der Konfigurationsdatei //**/etc/dovecot/conf.d/10-ssl.conf**// beim Konfigurationsparameter **ssl_key_password** hinterlegen. 
  
-Die Eingaben sind in der Farbe <html><font style="color: rgb(0, 0, 255)">blau</font></html> und die Rückmeldungen in der Farbe <html><font style="color: rgb(0255, 0)">grün</font></html> gekennzeichnet+== Laufzeit der Zertifikate anpassen =
 +Da wir die Laufzeit der erzeugten Zertifikate nicht auf der Kommandozeile beim Aufruf von **openssl** angeben könnenpassen wir in der OpenSSL-Konfigurationsdatei die Laufzeit **default_days** an.
  
-<html><pre class="code"> 
-<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">openssl genrsa -out serverkey.pem -aes256 4096 -days 7300</font> 
-</pre></html> 
-<html><pre class="code"> 
-<font style="color: rgb(0, 255, 0)">Generating RSA private key, 4096 bit long modulus 
-.......................................................................................................................................................................................................................++ 
-........................................................................................................................................................................................++ 
-e is 65537 (0x10001) 
-Enter pass phrase for serverkey.pem: </font><font style="color: rgb(0, 0, 255)">12qwasyx</font> 
-<font style="color: rgb(0, 255, 0)">Verifying - Enter pass phrase for serverkey.pem: </font></font><font style="color: rgb(0, 0, 255)">12qwasyx</font> 
-</pre></html> 
- 
-Wie schon erwähnt, entfernen wir die Passphrase nun wieder, in dem wir bei der Frage **Enter pass phrase:** einfach die Taste **[ENTER]** drücken. 
-<html><pre class="code"> 
-<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">openssl rsa <serverkey.pem >serverkey_2.pem</font> 
-</pre></html> 
-<html><pre class="code"> 
-<font style="color: rgb(0, 255, 0)">Enter pass phrase: 
-writing RSA key</font> 
-</pre></html> 
- 
-Wie schon zuvor schützen wir auch hier den Serverschlüssel über die Dateirechte, nachdem wir diesen umbenannt haben. 
-<html><pre class="code"> 
-<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">mv serverkey_2.pem serverkey.pem -f</font> 
-</pre></html> 
-<html><pre class="code"> 
-<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">chmod 400 serverkey.pem</font> 
-</pre></html> 
- 
-==== Certificate Signing Request erzeugen ==== 
-Im folgenden Schritt zu unserem eigenen Zertifikat erzeugen wir einen **CSR**((Certificate Signing Request)), den wir dann in einem weiteren Schritt von unserer eigenen CA signieren lassen werden. <WRAP round alert> **__Wichtig__**: Bei unserem Serverzertifikat ist der **Common Name** von entscheidender Bedeutung. Hier muss der DNS-Name unseres Postfix-Server eingetragen werden, unter dem der Mailserver angesprochen wird!</WRAP> 
-   # openssl req -new -key serverkey.pem -out csr.pem -nodes 
-<code>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) [XX]:DE 
-State or Province Name (full name) []:Bayern 
-Locality Name (eg, city) [Default City]:Pliening 
-Organization Name (eg, company) [Default Company Ltd]:nausch.org 
-Organizational Unit Name (eg, section) []:Postoffice 
-Common Name (eg, your name or your server's hostname) []:mail.nausch.org 
-Email Address []:postmaster@nausch.org 
- 
-Please enter the following 'extra' attributes 
-to be sent with your certificate request 
-A challenge password []: 
-An optional company name []: 
-</code> 
-<WRAP center round info> 
-Wollen oder müssen wir ein kommerzielles Zertifikat, also von einer in den Browsern und mailclients von Haus aus installierten CAs, nutzen, so lassen wir den CSR der CA zukommen. 
-   # cat csr.pem 
-<code>-----BEGIN CERTIFICATE REQUEST----- 
-MIIE4TCCAskCAQAwgZsxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAP 
-BgNVBAcMCFBsaWVuaW5nMRMwEQYDVQQKDApuYXVzY2gub3JnMRMwEQYDVQQLDApQ 
-b3N0b2ZmaWNlMRgwFgYDVQQDDA9tYWlsLm5hdXNjaC5vcmcxJDAiBgkqhkiG9w0B 
-CQEWFXBvc3RtYXN0ZXJAbmF1c2NoLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIP 
-ADCCAgoCggIBAJdbTDxgm4j1NAQjx3Lynu9E748Fntw3ercL3iwvdbyyw3/MlFAA 
-v1cfP5T0g7Vgl2UbIUK1tQzcaCN38J2r+9BcxOqk4sh9WOI2ZpZOzMLMYWWtuGak 
-ieIXH9Bmp/Iwgd2ddpo1Aa+Q/44lHhbN2UPJyG65S+UOFNO8Z6SGWEi/T6mcX9yn 
-AOvYlS8bIORGmV3aJtwt+9vu3qBFomwgU5Wz76E5vKrRxtpQJumQjnJup/2taCVP 
-ZtvasYNXP2ZgY4fKD0j24oU8XmpyjRc51vGcqk8UeagYRyrqEcqOMZGbC7WnugS4 
-yVFU+PAvR2SoAyRAXDeZBRXygxW/d2aWobOoXbOrY7cFVXS28R/z3LBg4LlWLzSA 
-BNBJdrNAg6HSeF6NGiSesPakIfY4w2u2Syv2+IUqWwtGxhpvn8zhnBY+PQEct7dz 
-rgsX7eT2/4lc9XQWUlzt+s5JGzlGNWqYvyZY/AUZ2Z4mTzR2nrx7RRQekHP94sk0 
-D/kDb6hzp9cpI1SRP5/r3u05z9J8mw2RabhAdoAyFG4maf/9i7LBZ3D08tNGIx4u 
-SLRlpkxfdEs67k/lXKHu/rTWFNqPfNY/49syYAN8J56hsVCkh5/L/deRMxCcLWr0 
-gbW1cuCeFDm6Abl1qW4s7qcu05ZADtXthWBTvbVC1P3aotzDWCVClGizAgMBAAGg 
-ADANBgkqhkiG9w0BAQsFAAOCAgEAD+1+9NQMWfOnIFjgZWRf4eQpT7kJZxuA+bYW 
-63HA0EPe7FURWqbJfSL8RQdEaT42MzNeSXVTSfhbe4CsVB3ta2xoqQOEhiOQSDLz 
-zgIF2+PxexV1a8BSw/8pm4KtwnCUTeNxe4+TQhsUxEkc12QHAOTMp2lSmRUFo4FZ 
-WQ/Quq/u7Q+7+IeqJBGPNRRMLCW70CretEpMfCzZujmiMb0c1fV3RqcfJgA3jkd7 
-ZC8llcF4qVQKzqFMv7gYc8F1ckD1ch11H3q7CjrfzHYbiUS8rHaiSjHG48k+Uqwj 
-ndArSDug4mQNazI/bkpOigZAGI0F6g5FDyj5/YYvd2UaDcNqIaYgHJFXmsQi675f 
-icPCIsaCSu0TkvUWyGJRUILoA1mBjnnFV9H9z9NW6Ttsm86MGyve3Va3xrknkGCB 
-YX0U+4SObf2CONB5UC/ztzqcMvjJ+BOPuVIRfFNxQIOoVlug6DYcBgIbnZyX3QYA 
-FF6oDA7wsbG+Oub1fHeo75m1O0G+MHzTwbJq0IKcPV5rsX+PFAa7qRMbYhlG0V+i 
-ji99uAL3jgCUxq670avy9vVanj96/CjXS0v9tcp+g6Sr63VFsV43hsh0ExmmLQZ2 
-UAcbeW4+RoAly/Bp/r2CgqMtj4E2v7ccjOpWO+4gTkr3SX5SPFW5OvbhycrUS34H 
-StvlMGo= 
------END CERTIFICATE REQUEST----- 
-</code> 
-</WRAP> 
- 
-Bei Interesse können wir uns unseren **CSR** auch ansehen, dazu benutzen wir folgenden Befehl: 
-   # openssl req -noout -text -in csr.pem 
-<code>Certificate Request: 
-    Data: 
-        Version: 0 (0x0) 
-        Subject: C=DE, ST=Bayern, L=Pliening, O=nausch.org, OU=Postoffice, CN=mail.nausch.org/emailAddress=postmaster@nausch.org 
-        Subject Public Key Info: 
-            Public Key Algorithm: rsaEncryption 
-                Public-Key: (4096 bit) 
-                Modulus: 
-                    00:97:5b:4c:3c:60:9b:88:f5:34:04:23:c7:72:f2: 
-                    9e:ef:44:ef:8f:05:9e:dc:37:7a:b7:0b:de:2c:2f: 
-                    75:bc:b2:c3:7f:cc:94:50:00:bf:57:1f:3f:94:f4: 
-                    83:b5:60:97:65:1b:21:42:b5:b5:0c:dc:68:23:77: 
-                    f0:9d:ab:fb:d0:5c:c4:ea:a4:e2:c8:7d:58:e2:36: 
-                    66:96:4e:cc:c2:cc:61:65:ad:b8:66:a4:89:e2:17: 
-                    1f:d0:66:a7:f2:30:81:dd:9d:76:9a:35:01:af:90: 
-                    ff:8e:25:1e:16:cd:d9:43:c9:c8:6e:b9:4b:e5:0e: 
-                    14:d3:bc:67:a4:86:58:48:bf:4f:a9:9c:5f:dc:a7: 
-                    00:eb:d8:95:2f:1b:20:e4:46:99:5d:da:26:dc:2d: 
-                    fb:db:ee:de:a0:45:a2:6c:20:53:95:b3:ef:a1:39: 
-                    bc:aa:d1:c6:da:50:26:e9:90:8e:72:6e:a7:fd:ad: 
-                    68:25:4f:66:db:da:b1:83:57:3f:66:60:63:87:ca: 
-                    0f:48:f6:e2:85:3c:5e:6a:72:8d:17:39:d6:f1:9c: 
-                    aa:4f:14:79:a8:18:47:2a:ea:11:ca:8e:31:91:9b: 
-                    0b:b5:a7:ba:04:b8:c9:51:54:f8:f0:2f:47:64:a8: 
-                    03:24:40:5c:37:99:05:15:f2:83:15:bf:77:66:96: 
-                    a1:b3:a8:5d:b3:14:12:19:72:55:74:b6:f1:1f:f3: 
-                    dc:b0:60:e0:b9:56:2f:34:80:04:d0:49:76:b3:40: 
-                    83:a1:d2:78:5e:8d:1a:24:9e:b0:f6:a4:21:f6:38: 
-                    c3:6b:b6:4b:2b:f6:f8:85:2a:5b:0b:46:c6:1a:6f: 
-                    9f:cc:e1:9c:16:3e:3d:01:1c:b7:b7:73:ae:0b:17: 
-                    ed:e4:f6:ff:89:5c:f5:74:16:52:5c:ed:fa:ce:49: 
-                    1b:39:46:35:6a:98:bf:26:58:fc:05:19:d9:9e:26: 
-                    4f:34:76:9e:bc:7b:45:14:1e:90:73:fd:e2:c9:34: 
-                    0f:f9:03:6f:a8:73:a7:d7:29:23:54:91:3f:9f:eb: 
-                    de:ed:39:cf:d2:7c:9b:0d:91:69:b8:40:76:80:32: 
-                    14:6e:26:69:ff:fd:8b:b2:c1:67:70:f4:f2:d3:46: 
-                    23:1e:2e:48:b4:65:a6:4c:5f:74:4b:3a:ee:4f:e5: 
-                    5c:a1:ee:fe:b4:d6:14:da:8f:7c:d6:3f:e3:db:32: 
-                    60:03:7c:27:9e:a1:b1:50:a4:87:9f:cb:fd:d7:91: 
-                    33:10:9c:2d:6a:f4:81:b5:b5:72:e0:9e:14:39:ba: 
-                    01:b9:75:a9:6e:2c:ee:a7:2e:d3:96:40:0e:d5:ed: 
-                    85:60:53:bd:b5:42:d4:fd:da:a2:dc:c3:58:25:42: 
-                    94:68:b3 
-                Exponent: 65537 (0x10001) 
-        Attributes: 
-            a0:00 
-    Signature Algorithm: sha256WithRSAEncryption 
-         0f:ed:7e:f4:d4:0c:59:f3:a7:20:58:e0:65:64:5f:e1:e4:29: 
-         4f:b9:09:67:1b:80:f9:b6:16:eb:71:c0:d0:43:de:ec:55:11: 
-         5a:a6:c9:7d:22:fc:45:07:44:69:3e:36:33:33:5e:49:75:53: 
-         49:f8:5b:7b:80:ac:54:1d:ed:6b:6c:68:a9:03:84:86:23:90: 
-         48:32:f3:ce:02:05:db:e3:f1:7b:15:75:6b:c0:52:c3:ff:29: 
-         9b:82:ad:c2:70:94:4d:e3:71:7b:8f:93:42:1b:14:c4:49:1c: 
-         d7:64:07:00:e4:cc:a7:69:52:99:15:05:a3:81:59:59:0f:d0: 
-         ba:af:ee:ed:0f:bb:f8:87:aa:24:11:8f:35:14:4c:2c:25:bb: 
-         d0:2a:de:b4:4a:4c:7c:2c:d9:ba:39:a2:31:bd:1c:d5:f5:77: 
-         46:a7:1f:26:00:37:8e:47:7b:64:2f:25:95:c1:78:a9:54:0a: 
-         ce:a1:4c:bf:b8:18:73:cf:4a:3b:32:a6:5c:4e:81:1f:7a:bb: 
-         0a:3a:df:cc:76:1b:89:44:bc:ac:76:a2:4a:31:c6:e3:c9:3e: 
-         52:ac:23:9d:d0:2b:48:3b:a0:e2:64:0d:6b:32:3f:6e:4a:4e: 
-         8a:06:40:18:8d:05:ea:0e:45:0f:28:f9:fd:86:2f:77:65:1a: 
-         0d:c3:6a:21:a6:20:1c:91:57:9a:c4:22:eb:be:5f:89:c3:c2: 
-         22:c6:82:4a:ed:13:92:f5:16:c8:62:51:50:82:e8:03:59:81: 
-         8e:79:c5:57:d1:fd:cf:d3:56:e9:3b:6c:9b:ce:8c:1b:2b:de: 
-         dd:56:b7:c6:b9:27:90:60:81:61:7d:14:fb:84:8e:6d:fd:82: 
-         38:d0:79:50:2f:f3:b7:3a:9c:32:f8:c9:f8:13:8f:b9:52:11: 
-         7c:53:71:40:83:a8:56:5b:a0:e8:36:1c:06:02:1b:9d:9c:97: 
-         dd:06:00:14:5e:a8:0c:0e:f0:b1:b1:be:3a:e6:f5:7c:77:a8: 
-         ef:99:b5:3b:41:be:14:08:19:67:b2:6a:d0:82:9c:3d:5e:6b: 
-         b1:7f:8f:14:06:bb:a9:13:1b:62:19:46:d1:5f:a2:8e:2f:7d: 
-         b8:02:f7:8e:00:94:c6:ae:bb:d1:ab:f2:f6:f5:5a:9e:3f:7a: 
-         fc:28:d7:4b:4b:fd:b5:ca:7e:83:a4:ab:eb:75:45:b1:5e:37: 
-         86:c8:74:13:19:a6:2d:06:76:50:07:1b:79:6e:3e:46:80:25: 
-         cb:f0:69:fe:bd:82:82:a3:2d:8f:81:36:bf:b7:1c:8c:ea:56: 
-         3b:ee:20:4e:4a:f7:49:7e:52:3c:55:b9:3a:f6:e1:c9:ca:d4: 
-         4b:7e:07:4a:db:e5:30:6a 
-</code> 
- 
-==== Serverzertifikat signieren ==== 
-Bevor wir nun unser eigenes Zertifikat mit Hilfe unserer eigenen **CA** signieren können, passen wir in der OpenSSL-Konfigurationsdatei die Laufzeit **default_days** an, da wir diese nicht auf der Komandozeile übergeben können. 
    # vim /etc/pki/tls/openssl.cnf    # vim /etc/pki/tls/openssl.cnf
 <file bash /etc/pki/tls/openssl.cnf># <file bash /etc/pki/tls/openssl.cnf>#
Zeile 1221: Zeile 1051:
 </file> </file>
  
-Außerdem verschieben wir den privaten Schlüssel unserer CA nach **/etc/pki/CA/private/**. 
-   # mv /etc/pki/CA/cakey.pem /etc/pki/CA/private/ 
  
-Kommen wir zum krönenden Abschluss - wir signieren nun das Server-Zertifikat durch unsere CA:  + 
-   # openssl ca -in csr.pem -notext -out servercert.pem +==== Schlüssel für das Serverzertifikat erzeugen ==== 
-<code>Using configuration from /etc/pki/tls/openssl.cnf +Nachdem wir nun unsere eigene CA erstellt haben, machen wir uns daran, endlich für unseren Server ein Zertifikat herausgeben. Hierzu erzeugen wir als erstes einen 4096 Bit langen RSA Schlüssel, den wir mit AES 256 verschlüsselt auf der Platte abgelegt lassen. Da OpenSSL keine leere Passphrase zulässt braucht die Passphrase diesmal nicht sonderlich geheim sein, da wir diese im Anschluss ohnehin sofort wieder entfernen werden. Alternativ können wir natürlich auch eine Passphrase vergeben und dieses Passwort dann in der Konfigurationsdatei //**/etc/dovecot/conf.d/10-ssl.conf**// beim Konfigurationsparameter **ssl_key_password** hinterlegen. 
-Enter pass phrase for /etc/pki/CA/private/cakey.pem: des-woas-blos-I-und-sundst-koana + 
-Check that the request matches the signature+Die Eingaben sind in der Farbe <html><font style="color: rgb(0, 0, 255)">blau</font></html> und die Rückmeldungen in der Farbe <html><font style="color: rgb(0, 255, 0)">grün</font></html> gekennzeichnet.  
 + 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">openssl genrsa -out serverkey.pem -aes256 4096 -days 7300</font> 
 +</pre></html> 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 255, 0)">Generating RSA private key, 4096 bit long modulus 
 +.......................................................................................................................................................................................................................++ 
 +........................................................................................................................................................................................++ 
 +e is 65537 (0x10001) 
 +Enter pass phrase for serverkey.pem: </font><font style="color: rgb(0, 0, 255)">12qwasyx</font> 
 +<font style="color: rgb(0, 255, 0)">Verifying - Enter pass phrase for serverkey.pem: </font></font><font style="color: rgb(0, 0, 255)">12qwasyx</font> 
 +</pre></html> 
 + 
 +Wie schon erwähnt, entfernen wir die Passphrase nun wieder, in dem wir bei der Frage **Enter pass phrase:** einfach die Taste **[ENTER]** drücken. 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">openssl rsa -in serverkey.pem -out serverkey_2.pem</font> 
 +</pre></html> 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 255, 0)">Enter pass phrase: 
 +writing RSA key</font> 
 +</pre></html> 
 + 
 +Wie schon zuvor schützen wir auch hier den Serverschlüssel über die Dateirechte, nachdem wir diesen umbenannt haben. 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">mv serverkey_2.pem serverkey.pem -f</font> 
 +</pre></html> 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">chmod 400 serverkey.pem</font> 
 +</pre></html> 
 + 
 +==== Certificate Signing Request erzeugen ==== 
 +Im folgenden Schritt zu unserem eigenen Zertifikat erzeugen wir einen **CSR**((Certificate Signing Request)), den wir dann in einem weiteren Schritt von unserer eigenen CA signieren lassen werden, oder bei der ausgewählten **kommerziellen CA** einkippen. <WRAP round alert> **__Wichtig__**: Bei unserem Serverzertifikat ist der **Common Name** von entscheidender Bedeutung. Hier muss der DNS-Name unseres Dovecot-Servers eingetragen werden, unter dem der Mailserver angesprochen wird!</WRAP> 
 + 
 +Auch hier sind die Eingaben in der Farbe <html><font style="color: rgb(0, 0, 255)">blau</font></html> und die Rückmeldungen in der Farbe <html><font style="color: rgb(0, 255, 0)">grün</font></html> gekennzeichnet.  
 + 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 0, 0)"># </font><font style="color: rgb(0, 0, 255)">openssl req -new -key serverkey.pem -out csr.pem -nodes</font> 
 +</pre></html> 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 255, 0)">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) [XX]:</font><font style="color: rgb(0, 0, 255)">DE</font> 
 +<font style="color: rgb(0, 255, 0)">State or Province Name (full name) []</font></font><font style="color: rgb(0, 0, 255)">Bayern</font> 
 +<font style="color: rgb(0, 255, 0)">Locality Name (eg, city) [Default City]:</font></font><font style="color: rgb(0, 0, 255)">Pliening</font> 
 +<font style="color: rgb(0, 255, 0)">Organization Name (eg, company) [Default Company Ltd]:</font></font><font style="color: rgb(0, 0, 255)">nausch.org</font> 
 +<font style="color: rgb(0, 255, 0)">Organizational Unit Name (eg, section) []:</font></font><font style="color: rgb(0, 0, 255)">Postoffice</font> 
 +<font style="color: rgb(0, 255, 0)">Common Name (eg, your name or your server's hostname) []:</font></font><font style="color: rgb(0, 0, 255)">mail.nausch.org</font> 
 +<font style="color: rgb(0, 255, 0)">Email Address []:</font></font><font style="color: rgb(0, 0, 255)">postmaster@nausch.org</font> 
 +<font style="color: rgb(0, 255, 0)"> 
 +Please enter the following 'extra' attributes 
 +to be sent with your certificate request 
 +A challenge password []: 
 +An optional company name []:</font> 
 +</pre></html> 
 + 
 +<WRAP center round info> 
 +Wollen oder müssen wir ein kommerzielles Zertifikat, also von einer in den Browsern und mailclients von Haus aus installierten CAs, nutzen, so lassen wir den CSR der CA zukommen. 
 +   # cat csr.pem 
 +<code>-----BEGIN CERTIFICATE REQUEST----- 
 +MIIE4TCCAskCAQAwgZsxCzAJBgNVBAYTAkRFMQ8wDQYDVQQIDAZCYXllcm4xETAP 
 +BgNVBAcMCFBsaWVuaW5nMRMwEQYDVQQKDApuYXVzY2gub3JnMRMwEQYDVQQLDApQ 
 +b3N0b2ZmaWNlMRgwFgYDVQQDDA9tYWlsLm5hdXNjaC5vcmcxJDAiBgkqhkiG9w0B 
 +CQEWFXBvc3RtYXN0ZXJAbmF1c2NoLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIP 
 +ADCCAgoCggIBAJdbTDxgm4j1NAQjx3Lynu9E748Fntw3ercL3iwvdbyyw3/MlFAA 
 +v1cfP5T0g7Vgl2UbIUK1tQzcaCN38J2r+9BcxOqk4sh9WOI2ZpZOzMLMYWWtuGak 
 +ieIXH9Bmp/Iwgd2ddpo1Aa+Q/44lHhbN2UPJyG65S+UOFNO8Z6SGWEi/T6mcX9yn 
 +AOvYlS8bIORGmV3aJtwt+9vu3qBFomwgU5Wz76E5vKrRxtpQJumQjnJup/2taCVP 
 +ZtvasYNXP2ZgY4fKD0j24oU8XmpyjRc51vGcqk8UeagYRyrqEcqOMZGbC7WnugS4 
 +yVFU+PAvR2SoAyRAXDeZBRXygxW/d2aWobOoXbOrY7cFVXS28R/z3LBg4LlWLzSA 
 +BNBJdrNAg6HSeF6NGiSesPakIfY4w2u2Syv2+IUqWwtGxhpvn8zhnBY+PQEct7dz 
 +rgsX7eT2/4lc9XQWUlzt+s5JGzlGNWqYvyZY/AUZ2Z4mTzR2nrx7RRQekHP94sk0 
 +D/kDb6hzp9cpI1SRP5/r3u05z9J8mw2RabhAdoAyFG4maf/9i7LBZ3D08tNGIx4u 
 +SLRlpkxfdEs67k/lXKHu/rTWFNqPfNY/49syYAN8J56hsVCkh5/L/deRMxCcLWr0 
 +gbW1cuCeFDm6Abl1qW4s7qcu05ZADtXthWBTvbVC1P3aotzDWCVClGizAgMBAAGg 
 +ADANBgkqhkiG9w0BAQsFAAOCAgEAD+1+9NQMWfOnIFjgZWRf4eQpT7kJZxuA+bYW 
 +63HA0EPe7FURWqbJfSL8RQdEaT42MzNeSXVTSfhbe4CsVB3ta2xoqQOEhiOQSDLz 
 +zgIF2+PxexV1a8BSw/8pm4KtwnCUTeNxe4+TQhsUxEkc12QHAOTMp2lSmRUFo4FZ 
 +WQ/Quq/u7Q+7+IeqJBGPNRRMLCW70CretEpMfCzZujmiMb0c1fV3RqcfJgA3jkd7 
 +ZC8llcF4qVQKzqFMv7gYc8F1ckD1ch11H3q7CjrfzHYbiUS8rHaiSjHG48k+Uqwj 
 +ndArSDug4mQNazI/bkpOigZAGI0F6g5FDyj5/YYvd2UaDcNqIaYgHJFXmsQi675f 
 +icPCIsaCSu0TkvUWyGJRUILoA1mBjnnFV9H9z9NW6Ttsm86MGyve3Va3xrknkGCB 
 +YX0U+4SObf2CONB5UC/ztzqcMvjJ+BOPuVIRfFNxQIOoVlug6DYcBgIbnZyX3QYA 
 +FF6oDA7wsbG+Oub1fHeo75m1O0G+MHzTwbJq0IKcPV5rsX+PFAa7qRMbYhlG0V+i 
 +ji99uAL3jgCUxq670avy9vVanj96/CjXS0v9tcp+g6Sr63VFsV43hsh0ExmmLQZ2 
 +UAcbeW4+RoAly/Bp/r2CgqMtj4E2v7ccjOpWO+4gTkr3SX5SPFW5OvbhycrUS34H 
 +StvlMGo= 
 +-----END CERTIFICATE REQUEST----- 
 +</code> 
 +</WRAP> 
 + 
 +Bei Interesse können wir uns unseren **CSR** auch ansehen, dazu benutzen wir folgenden Befehl: 
 +   # openssl req -noout -text -in csr.pem 
 +<code>Certificate Request: 
 +    Data: 
 +        Version: 0 (0x0) 
 +        Subject: C=DE, ST=Bayern, L=Pliening, O=nausch.org, OU=Postoffice, CN=mail.nausch.org/emailAddress=postmaster@nausch.org 
 +        Subject Public Key Info: 
 +            Public Key Algorithm: rsaEncryption 
 +                Public-Key: (4096 bit) 
 +                Modulus: 
 +                    00:97:5b:4c:3c:60:9b:88:f5:34:04:23:c7:72:f2: 
 +                    9e:ef:44:ef:8f:05:9e:dc:37:7a:b7:0b:de:2c:2f: 
 +                    75:bc:b2:c3:7f:cc:94:50:00:bf:57:1f:3f:94:f4: 
 +                    83:b5:60:97:65:1b:21:42:b5:b5:0c:dc:68:23:77: 
 +                    f0:9d:ab:fb:d0:5c:c4:ea:a4:e2:c8:7d:58:e2:36: 
 +                    66:96:4e:cc:c2:cc:61:65:ad:b8:66:a4:89:e2:17: 
 +                    1f:d0:66:a7:f2:30:81:dd:9d:76:9a:35:01:af:90: 
 +                    ff:8e:25:1e:16:cd:d9:43:c9:c8:6e:b9:4b:e5:0e: 
 +                    14:d3:bc:67:a4:86:58:48:bf:4f:a9:9c:5f:dc:a7: 
 +                    00:eb:d8:95:2f:1b:20:e4:46:99:5d:da:26:dc:2d: 
 +                    fb:db:ee:de:a0:45:a2:6c:20:53:95:b3:ef:a1:39: 
 +                    bc:aa:d1:c6:da:50:26:e9:90:8e:72:6e:a7:fd:ad: 
 +                    68:25:4f:66:db:da:b1:83:57:3f:66:60:63:87:ca: 
 +                    0f:48:f6:e2:85:3c:5e:6a:72:8d:17:39:d6:f1:9c: 
 +                    aa:4f:14:79:a8:18:47:2a:ea:11:ca:8e:31:91:9b: 
 +                    0b:b5:a7:ba:04:b8:c9:51:54:f8:f0:2f:47:64:a8: 
 +                    03:24:40:5c:37:99:05:15:f2:83:15:bf:77:66:96: 
 +                    a1:b3:a8:5d:b3:14:12:19:72:55:74:b6:f1:1f:f3: 
 +                    dc:b0:60:e0:b9:56:2f:34:80:04:d0:49:76:b3:40: 
 +                    83:a1:d2:78:5e:8d:1a:24:9e:b0:f6:a4:21:f6:38: 
 +                    c3:6b:b6:4b:2b:f6:f8:85:2a:5b:0b:46:c6:1a:6f: 
 +                    9f:cc:e1:9c:16:3e:3d:01:1c:b7:b7:73:ae:0b:17: 
 +                    ed:e4:f6:ff:89:5c:f5:74:16:52:5c:ed:fa:ce:49: 
 +                    1b:39:46:35:6a:98:bf:26:58:fc:05:19:d9:9e:26: 
 +                    4f:34:76:9e:bc:7b:45:14:1e:90:73:fd:e2:c9:34: 
 +                    0f:f9:03:6f:a8:73:a7:d7:29:23:54:91:3f:9f:eb: 
 +                    de:ed:39:cf:d2:7c:9b:0d:91:69:b8:40:76:80:32: 
 +                    14:6e:26:69:ff:fd:8b:b2:c1:67:70:f4:f2:d3:46: 
 +                    23:1e:2e:48:b4:65:a6:4c:5f:74:4b:3a:ee:4f:e5: 
 +                    5c:a1:ee:fe:b4:d6:14:da:8f:7c:d6:3f:e3:db:32: 
 +                    60:03:7c:27:9e:a1:b1:50:a4:87:9f:cb:fd:d7:91: 
 +                    33:10:9c:2d:6a:f4:81:b5:b5:72:e0:9e:14:39:ba: 
 +                    01:b9:75:a9:6e:2c:ee:a7:2e:d3:96:40:0e:d5:ed: 
 +                    85:60:53:bd:b5:42:d4:fd:da:a2:dc:c3:58:25:42: 
 +                    94:68:b3 
 +                Exponent: 65537 (0x10001) 
 +        Attributes: 
 +            a0:00 
 +    Signature Algorithm: sha256WithRSAEncryption 
 +         0f:ed:7e:f4:d4:0c:59:f3:a7:20:58:e0:65:64:5f:e1:e4:29: 
 +         4f:b9:09:67:1b:80:f9:b6:16:eb:71:c0:d0:43:de:ec:55:11: 
 +         5a:a6:c9:7d:22:fc:45:07:44:69:3e:36:33:33:5e:49:75:53: 
 +         49:f8:5b:7b:80:ac:54:1d:ed:6b:6c:68:a9:03:84:86:23:90: 
 +         48:32:f3:ce:02:05:db:e3:f1:7b:15:75:6b:c0:52:c3:ff:29: 
 +         9b:82:ad:c2:70:94:4d:e3:71:7b:8f:93:42:1b:14:c4:49:1c: 
 +         d7:64:07:00:e4:cc:a7:69:52:99:15:05:a3:81:59:59:0f:d0: 
 +         ba:af:ee:ed:0f:bb:f8:87:aa:24:11:8f:35:14:4c:2c:25:bb: 
 +         d0:2a:de:b4:4a:4c:7c:2c:d9:ba:39:a2:31:bd:1c:d5:f5:77: 
 +         46:a7:1f:26:00:37:8e:47:7b:64:2f:25:95:c1:78:a9:54:0a: 
 +         ce:a1:4c:bf:b8:18:73:cf:4a:3b:32:a6:5c:4e:81:1f:7a:bb: 
 +         0a:3a:df:cc:76:1b:89:44:bc:ac:76:a2:4a:31:c6:e3:c9:3e: 
 +         52:ac:23:9d:d0:2b:48:3b:a0:e2:64:0d:6b:32:3f:6e:4a:4e: 
 +         8a:06:40:18:8d:05:ea:0e:45:0f:28:f9:fd:86:2f:77:65:1a: 
 +         0d:c3:6a:21:a6:20:1c:91:57:9a:c4:22:eb:be:5f:89:c3:c2: 
 +         22:c6:82:4a:ed:13:92:f5:16:c8:62:51:50:82:e8:03:59:81: 
 +         8e:79:c5:57:d1:fd:cf:d3:56:e9:3b:6c:9b:ce:8c:1b:2b:de: 
 +         dd:56:b7:c6:b9:27:90:60:81:61:7d:14:fb:84:8e:6d:fd:82: 
 +         38:d0:79:50:2f:f3:b7:3a:9c:32:f8:c9:f8:13:8f:b9:52:11: 
 +         7c:53:71:40:83:a8:56:5b:a0:e8:36:1c:06:02:1b:9d:9c:97: 
 +         dd:06:00:14:5e:a8:0c:0e:f0:b1:b1:be:3a:e6:f5:7c:77:a8: 
 +         ef:99:b5:3b:41:be:14:08:19:67:b2:6a:d0:82:9c:3d:5e:6b: 
 +         b1:7f:8f:14:06:bb:a9:13:1b:62:19:46:d1:5f:a2:8e:2f:7d: 
 +         b8:02:f7:8e:00:94:c6:ae:bb:d1:ab:f2:f6:f5:5a:9e:3f:7a: 
 +         fc:28:d7:4b:4b:fd:b5:ca:7e:83:a4:ab:eb:75:45:b1:5e:37: 
 +         86:c8:74:13:19:a6:2d:06:76:50:07:1b:79:6e:3e:46:80:25: 
 +         cb:f0:69:fe:bd:82:82:a3:2d:8f:81:36:bf:b7:1c:8c:ea:56: 
 +         3b:ee:20:4e:4a:f7:49:7e:52:3c:55:b9:3a:f6:e1:c9:ca:d4: 
 +         4b:7e:07:4a:db:e5:30:6a 
 +</code> 
 + 
 +==== eigene CA: CSR beabeiten - Zertifikat erstellen ==== 
 +Kommen wir zum krönenden Abschluss - wir signieren nun das Server-Zertifikat durch unsere CA, oder anders ausgedrückt, wir erstellen das benötigte **X.509**-Serverzertifikat.  
 + 
 +Wie schon bereits bei den anderen Konfigurationsbeispielen, sind auch hier die Eingaben in der Farbe <html><font style="colorrgb(0, 0, 255)">blau</font></html> und die Rückmeldungen in der Farbe <html><font style="color: rgb(0, 255, 0)">grün</font></html> gekennzeichnet.  
 + 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 0, 0)"></font><font style="color: rgb(0, 0, 255)">openssl ca -in csr.pem -notext -out servercert.pem</font> 
 +</pre></html> 
 +<html><pre class="code"> 
 +<font style="color: rgb(0, 255, 0)">Using configuration from /etc/pki/tls/openssl.cnf 
 +Enter pass phrase for /etc/pki/CA/private/cakey.pem: </font><font style="color: rgb(0, 0, 255)">des-woas-blos-I-und-sundst-koana</font> 
 +<font style="color: rgb(0, 255, 0)">Check that the request matches the signature
 Signature ok Signature ok
 Certificate Details: Certificate Details:
Zeile 1253: Zeile 1268:
  
 Certificate is to be certified until Jul 22 13:00:41 2016 GMT (730 days) Certificate is to be certified until Jul 22 13:00:41 2016 GMT (730 days)
-Sign the certificate? [y/n]:y+Sign the certificate? [y/n]:</font></font><font style="color: rgb(0, 0, 255)">y</font> 
 +<font style="color: rgb(0, 255, 0)">
  
 +1 out of 1 certificate requests certified, commit? [y/n]</font></font><font style="color: rgb(0, 0, 255)">y</font>
 +<font style="color: rgb(0, 255, 0)">Write out database with 1 new entries
 +Data Base Updated</font>
 +</pre></html>
  
-1 out of 1 certificate requests certified, commit? [y/n]y +===== Zertifikat- und Schlüsseldatei ===== 
-Write out database with 1 new entries +==== Speicherort ====
-Data Base Updated +
-</code> +
- +
-==== Schlüsseldateien ablegen ====+
 Bei der Dovecot-Installation wurde bereits der Unterordner für das Dovecot-Zertifikates und der zugehörigen Schlüssel-Datei unter **/etc/pki** angelegt. Bei der Dovecot-Installation wurde bereits der Unterordner für das Dovecot-Zertifikates und der zugehörigen Schlüssel-Datei unter **/etc/pki** angelegt.
 <code>/etc/pki/dovecot/ <code>/etc/pki/dovecot/
Zeile 1272: Zeile 1288:
  
 Anschließend legen wir dort die drei benötigten Dateien ab: Anschließend legen wir dort die drei benötigten Dateien ab:
-  - unseren //Serverzertifikat// : **servercert.pem** +  - unseren //Serverzertifikat// : **servercert.pem** <code> # mv /etc/pki/CA/servercert.pem /etc/pki/dovecot/certs/servercert_2014-08-14.pem</code> 
-  - unseren //Serverschlüssel// : **serverkey.pem** und +  - unseren //Serverschlüssel// : **serverkey.pem** <code> # mv /etc/pki/CA/serverkey.pem /etc/pki/dovecot/private/serverkey_2014-08-14.pem</code> 
-  - das //CA-Zertifikat// : **cacert.pem** +  - das //CA-Zertifikat// : **cacert.pem** <code> # cp /etc/pki/CA/cacert.pem /etc/pki/dovecot/certs/</code> 
-und schützen diese Dateien mit den Dateirechten **400**: +  - und schützen diese Dateien mit den Dateirechten **400**: <code> # chmod 400 /etc/pki/dovecot/private/*.pem 
-   # mv /etc/pki/CA/servercert.pem /etc/pki/dovecot/certs/servercert_2014-08-14.pem + # chmod 400 /etc/pki/dovecot/certs/*.pem</code>
-   # mv /etc/pki/CA/serverkey.pem /etc/pki/dovecot/private/serverkey_2014-08-14.pem +
-   # cp /etc/pki/CA/cacert.pem /etc/pki/dovecot/certs/ +
-   # chmod 400 /etc/pki/dovecot/certs/*.pem +
-   # chmod 400 /etc/pki/dovecot/private/*.pem+
  
 ==== Zertifikatsketten ==== ==== Zertifikatsketten ====
 Handelt es sich bei der CA um eine mehrstufige CA, so hat man nicht nur ein Zertifikatsfile der RootCA, sondern auch weitere, wie z.B. ein Zwischenzertifikat. Handelt es sich bei der CA um eine mehrstufige CA, so hat man nicht nur ein Zertifikatsfile der RootCA, sondern auch weitere, wie z.B. ein Zwischenzertifikat.
  
-Damit Dovecot mit solchen Zertifikaten umgehen kann, ist es notwendig, dass die einzelnen Inhalte der Zertifikats-Dateien in eine gemeinsame Datei kopiert werden. Folgende Reihenfolge ist dringend einzuhalten:+Damit Dovecot mit solchen Zertifikaten umgehen kann, ist es notwendig, dass die einzelnen Inhalte der Zertifikats-Dateien in eine gemeinsame Datei kopiert werden. Folgende Reihenfolge ist dabei **__dringend__** einzuhalten:
   - Dovecot's public certificate   - Dovecot's public certificate
   - TDC SSL Server CA   - TDC SSL Server CA
Zeile 1371: Zeile 1383:
    # vim /etc/dovecot/conf.d/10-ssl.conf    # vim /etc/dovecot/conf.d/10-ssl.conf
  
-<file bash /etc/dovecot/conf.d/10-ssl.conf>## +<file bash /etc/dovecot/conf.d/10-ssl.conf>##                                                                         
-## SSL settings +## SSL settings                                                            
-##+##                                                                        
  
 # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt> # 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 # 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 +# plain imap and pop3 are still allowed for local connections                       
-ssl = required+ssl = required                                                                     
  
 # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before # 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 +# 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 +# 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 +# certificate, just make sure to update the domains in dovecot-openssl.cnf     
-# Django : 2014-04-09 +# Django : 2015-06-09                                                          
-# old    : ssl_cert = </etc/pki/dovecot/certs/dovecot.pem +# old    : ssl_cert = </etc/pki/dovecot/certs/dovecot.pem                      
-#          ssl_key = </etc/pki/dovecot/private/dovecot.pem +#          ssl_key = </etc/pki/dovecot/private/dovecot.pem                     
-ssl_cert = </etc/pki/dovecot/certs/servercert_2014-04-09.pem +ssl_cert = </etc/pki/dovecot/certs/imap.nausch.org.cert_bundle.2015-06-09.pem 
-ssl_key = </etc/pki/dovecot/private/serverkey_2014-04-09.pem+ssl_key = </etc/pki/dovecot/private/serverkey_2015-06-09.pem                 
  
 # If key file is password protected, give the password here. Alternatively # If key file is password protected, give the password here. Alternatively
 # give it when starting dovecot with -p parameter. Since this file is often # give it when starting dovecot with -p parameter. Since this file is often
 # world-readable, you may want to place this setting instead to a different # world-readable, you may want to place this setting instead to a different
-# root owned 0600 file by using ssl_key_password = <path. +# root owned 0600 file by using ssl_key_password = <path.                   
-#ssl_key_password =+#ssl_key_password =                                                        
  
 # PEM encoded trusted certificate authority. Set this only if you intend to use # PEM encoded trusted certificate authority. Set this only if you intend to use
 # ssl_verify_client_cert=yes. The file should contain the CA certificate(s) # ssl_verify_client_cert=yes. The file should contain the CA certificate(s)
 # followed by the matching CRL(s). (e.g. ssl_ca = </etc/pki/dovecot/certs/ca.pem) # followed by the matching CRL(s). (e.g. ssl_ca = </etc/pki/dovecot/certs/ca.pem)
-#ssl_ca = +#ssl_ca =
  
 # Require that CRL check succeeds for client certificates. # Require that CRL check succeeds for client certificates.
Zeile 1421: Zeile 1433:
  
 # DH parameters length to use. # DH parameters length to use.
-#ssl_dh_parameters_length = 1024+Django : 2015-05-21 
 +# default: ssl_dh_parameters_length = 1024 
 +ssl_dh_parameters_length=4096 
 + 
 +# Weekly regeneration of the ssl-parameters 
 +# Django : 2015-06-10 
 +# default: ssl_parameters_regenerate = 0 
 +#          ssl_parameters_regenerate = 2 hours 
 +#          Won't work since dovecot 2.2! 
 +#          Update ssl_dh_parameters_length with script dh-params 
 +#          https://dokuwiki.nausch.org/doku.php/centos:mail_c7:dovecot_4?&#diffie-hellman-verfahren_und_perfect_forward_secrecy
  
 # SSL protocols to use # SSL protocols to use
-#ssl_protocols = !SSLv2+# Django : 2014-10-16 
 +# default: #ssl_protocols = !SSLv2 
 +ssl_protocols = !SSLv2 !SSLv3
  
 # SSL ciphers to use # SSL ciphers to use
-#ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL+# Django : 2014-10-16 
 +# default: #ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL 
 +ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4
  
 # Prefer the server's order of ciphers over client's. # Prefer the server's order of ciphers over client's.
-#ssl_prefer_server_ciphers = no+# Django : 2015-05-20 
 +# default: #ssl_prefer_server_ciphers = no 
 +ssl_prefer_server_ciphers = yes
  
 # SSL crypto device to use, for valid values run "openssl engine" # SSL crypto device to use, for valid values run "openssl engine"
Zeile 1436: Zeile 1464:
 </file> </file>
  
 +Über den Paramter **ssl** kann man steuern, ob **SSL/TLS** nun verwendet werden kann, oder ob es verwendet werden muss, oder eben nicht. Wir lassen den Default-Wert //**required**// stehen, was bedeutet, dass den Clients **SSL/TLS** als **zwingend vorgeschrieben** ist. Ein //**yes**// setzt die Transportverschlüsselung als **optional** und ein //**no**//  **deaktiviert** die Transportverschlüsselung gar ganz, aber wer will das seinen Endkunden in Zeiten vob **NSA**, **BND** und **Tempora** noch guten Gewissens verkaufen? 
 +
 +=== Diffie-Hellman-Verfahren und Perfect Forward Secrecy  ===
 +Wie am Anfang des Artikels bereits angeschnitten, basiert Perfect Forward Secrecy (**PFS**) auf der Idee, dass Client und Server ihre Kommunikation über einen zusätzlichen temporären Schlüssel absichern, der wechselt. 
 +
 +Dovecot stellt das normale **[[http://de.wikipedia.org/wiki/Elliptic_Curve_Diffie-Hellman|DHE]]**-Verfahren bereits ab Version 2.1.x und das wesentlich bessere und performantere **[[http://de.wikipedia.org/wiki/Elliptic_Curve_Cryptography|ECDHE]]**-Verfahren ab 2.2.x zur Verfügung.
 +
 +<WRAP center round important 85%>
 +**Wichtig**:\\ \\
 +Die **Diffie-Hellman-Parameter** werden beim ersten Start des Dovecot-Daemon erzeugt und in der Datei **// /var/lib/dovecot/ssl-parameters.dat//** abgelegt.
 +
 +Entgegen den Angaben im Abschnitt **SSL security settings** im [[http://wiki2.dovecot.org/SSL/DovecotConfiguration|Dovecot WIKI]] wird die Parameterdatei __nicht__ wöchentlich erneuert! Diese Funktion wurde ab Dovecot-Version **2.2.7** nicht mehr bereitgestellt.
 +
 +Die Hintergründe und die Lösung zu diesem Problem, basieren auf den Hinweisen von **//[[https://andreasschulze.de/dovecot/ssl-params|Andreas Schulze]]//**, dem hier ein ausdrücklicher Dank gebührt!
 +</WRAP>
 +
 +Wir werden also das Wechseln der **Diffie-Hellman-Parameter** werden wir also selbst in die Hand nehmen. Dies erfolgt in zwei Schritten.
 +  - **Parameterdatei erstellen** und
 +  - **Dovecot die neuen Parameter bekanntgeben**
 +
 +Die Erzeugung der **DH-Parameter-Datei** erfolgt mit Hilfe des Programms **ssl-params** aus dem Verzeichnis //**/usr/libexec/dovecot/**//. Diesem Binary müssen wir angeben, welche Parameter-Länge **ssl_dh_parameters_length** verwendet werden und wo die Parameter-Datei **state_dir** gespeichert werden soll. Hierzu legen wir uns eine Konfigurationsdatei an.
 +   # vim /etc/dovecot/ssl-params.conf
 +
 +<file bash /etc/dovecot/ssl-params.conf># Django : 2015-06-09
 +#          Länge der Diffie-Hellman-Parameter, diese muss der Länge des privaten RSA-Schlüssels entsprechen
 +ssl_dh_parameters_length = 4096
 +#
 +#          Speicherort der Diffie-Hellman-Parameter-Datei ssl-parameters.dat
 +state_dir = /var/lib/dovecot/tmp
 +</file>
 +
 +Als nächstes erzeugen wir noch das temporäre Verzeichnis, in dem die Parameterdatei erzeugt werden kann.  
 +   # mkdir /var/lib/dovecot/tmp/
 +
 +Das Erzeugen erfolgt nun mit Hilfe des folgenden Aufrufs.
 +   # /usr/libexec/dovecot/ssl-params -c /etc/dovecot/ssl-params.conf
 +
 +Dovecot können wir nun leider nicht anweisen, direkt diese Parameterdatei zu laden. Wir werden daher unsere neu generierte Datei an Ort und Stelle verschieben, wo Dovecot diese erwartet. 
 +   # /usr/bin/mv /var/lib/dovecot/tmp/ssl-parameters.dat /var/lib/dovecot/ssl-parameters.dat
 +
 +Anschließend führen wir einen Reload des Dovecot-Daemon durch, damit dieser diese DH-Parameter neu einliest.
 +   # systemctl reload dovecot
 +
 +Da wir in regelmäßigen Abständen die Diffie-Hellman Parameter neu generieren wollen, verpacken wir die gerade gezeigten Schritte in ein Script verlagern. 
 +   # vim /etc/cron.weekly/dh-params
 +
 +<file bash /etc/cron.weekly/dh-params>#!/bin/sh
 +# Diffie-Hellman Parameter Datei erzeugen
 +/usr/libexec/dovecot/ssl-params -c /etc/dovecot/ssl-params.conf
 +
 +# Hostname und Datum holen
 +NAME=`hostname -s`
 +DATUM=`date +'%b %e %H:%M:%S'`
 +
 +# Parameterdatei für Dovecot bereitstellen
 +/usr/bin/mv /var/lib/dovecot/tmp/ssl-parameters.dat /var/lib/dovecot/ssl-parameters.dat
 +
 +# Informationen zur neuen Parameterdatei im Maillog vermerken
 +echo "$DATUM" "$NAME" "dovecot: ssl-params: renewed diffie-hellman parameters 4096bit" >> /var/log/maillog
 +
 +# Dovecot die neuen DH-Parameter bekannt geben
 +/usr/bin/systemctl reload dovecot
 +
 +# Temporäres Verzeichnis leeren
 +/usr/bin/rm /var/lib/dovecot/tmp/ssl-parameters.dat -f
 +</file>
 +
 +Damit das Script nun auch ausgeführt werden kann, versehen wir es noch  mit den **x**-Ausführungsrechten.
 +   # chmod +x /etc/cron.weekly/dh-params
 +
 +Das regelmäßige Erneuern der DH-Parameter erfolgt nun regelmäßig und wir im Maillog entsprechend dokumentiert.
 +
 +   # less /var/log/maillog
 +
 +  Jun  9 20:08:31 vml000077 dovecot: ssl-params(4526): renewed diffie-hellman parameters 4096bit
 +  Jun  9 20:08:31 vml000077 dovecot: master: Warning: SIGHUP received - reloading configuration
  
  
Zeile 1622: Zeile 1726:
  
 ===== Dovecot Verbindungstest ===== ===== Dovecot Verbindungstest =====
 +==== openssl ====
 Zum Testen der kompletten Konfigurationsänderungen greifen wir auf die Bibliothek **openssl** zurück. Im nachfolgendem Beispiel bauen wir eine Verbindung von einem entferneten Linux-Host im eigenen Netz auf. Somit haben wir auch gleich noch den Test, ob es ggf. nicht eine Firewall gibt, die unseren Verbindungsaufbauwunsch unter Umständen blockiert. Zum Testen der kompletten Konfigurationsänderungen greifen wir auf die Bibliothek **openssl** zurück. Im nachfolgendem Beispiel bauen wir eine Verbindung von einem entferneten Linux-Host im eigenen Netz auf. Somit haben wir auch gleich noch den Test, ob es ggf. nicht eine Firewall gibt, die unseren Verbindungsaufbauwunsch unter Umständen blockiert.
  
-Nach Herstellen der Verbindung loggen wir uns einfach wieder vom System ab, in dem wir die Zeichenfolge **42 logout** vwerwenden.+Nach Herstellen der Verbindung loggen wir uns einfach wieder vom System ab, in dem wir die Zeichenfolge **42 logout** verwenden. 
    $ openssl s_client -starttls imap -connect 10.0.0.70:143    $ openssl s_client -starttls imap -connect 10.0.0.70:143
 <code>CONNECTED(00000003) <code>CONNECTED(00000003)
Zeile 1750: Zeile 1856:
  
    Jul 23 16:39:08 vml000070 dovecot: imap-login: Aborted login (no auth attempts in 5 secs): user=<>, rip=10.0.0.20, TLS, TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits), session=<FCSBTd3+sQAKAAAU>    Jul 23 16:39:08 vml000070 dovecot: imap-login: Aborted login (no auth attempts in 5 secs): user=<>, rip=10.0.0.20, TLS, TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits), session=<FCSBTd3+sQAKAAAU>
 +
 +
 +Wollen wir unser Produktiv-System überprüfen, nutzen wir einen der folgenden Aufrufe:
 +  * **IMAP** und **START/TLS**: <code> $ openssl s_client -starttls imap -connect imap.nausch.org:143</code>
 +  * **IMAP** und **SSL**: <code> $ openssl s_client -connect imap.nausch.org:993</code>
 +  * **POP3** und **SSL**: <code> $ openssl s_client -connect imap.nausch.org:995</code>
 +
 +Finden wir in der Ausgabe eine der nachfolgenden Angaben, ist alles bestens, der IMAP-Server unterstützt **//Perfect Forward Secrecy//**
 +
 +  * **Protocol** : \\ TLSv1.2 \\ <html>&nbsp;</html>
 +  * **Cipher** : \\ ECDHE-RSA-AES256-GCM-SHA384 \\ DHE-RSA-AES256-GCM-SHA384
 +
 +<WRAP center round important>
 +**Wichtig:** \\ Nicht der Server definiert letztendlich, welcher **Cipher** bei der Absicherung der Übertragung verwendet wird, sondern der Mailclient! Und hier kann man durchaus sehr interessante Aha-Erlebnisse haben, wenn man mit den einschlägigen teuren Clientlösungen Verbindungen testet. m(
 +</WRAP>
 +
 +==== cipherscan ====
 +Zum Überprüfen welche Chiffren vom Server angeboten und unterstützt werden, greifen wir auf das Tool **[[https://github.com/jvehent/cipherscan|cipherscan]]** von [[julien@linuxwall.info|Julien Vehent]] und [[hkario@redhat.com|Hubert Kario]] zurück. Das Projekt basiert auf den openssl-Bibliotheken und wird auf [[https://github.com|GitHub]] zur Verfügung gestellt.
 +
 +Mit nachfolgendem Aufruf kann überprüft werden, welche Ciphers angeboten werden.
 +   # /usr/local/src/cipherscan-master/cipherscan -o /usr/local/src/cipherscan-master/openssl --curves -starttls imap imap.nausch.org:143
 +
 +<code>.....................................
 +Target: imap.nausch.org:143
 +
 +prio  ciphersuite                  protocols              pfs                 curves
 +1     ECDHE-RSA-AES256-GCM-SHA384  TLSv1.2                ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +2     ECDHE-RSA-AES128-GCM-SHA256  TLSv1.2                ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +3     ECDHE-RSA-AES256-SHA384      TLSv1.2                ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +4     ECDHE-RSA-AES128-SHA256      TLSv1.2                ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +5     ECDHE-RSA-AES256-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +6     ECDHE-RSA-AES128-SHA         TLSv1,TLSv1.1,TLSv1.2  ECDH,P-256,256bits  prime256v1,secp384r1,secp521r1
 +7     DHE-RSA-AES256-GCM-SHA384    TLSv1.2                DH,4096bits         None
 +8     DHE-RSA-AES256-SHA256        TLSv1.2                DH,4096bits         None
 +9     DHE-RSA-AES256-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +10    DHE-RSA-CAMELLIA256-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +11    DHE-RSA-AES128-GCM-SHA256    TLSv1.2                DH,4096bits         None
 +12    DHE-RSA-AES128-SHA256        TLSv1.2                DH,4096bits         None
 +13    DHE-RSA-AES128-SHA           TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +14    DHE-RSA-SEED-SHA             TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +15    DHE-RSA-CAMELLIA128-SHA      TLSv1,TLSv1.1,TLSv1.2  DH,4096bits         None
 +
 +Certificate: trusted, 4096 bit, sha512WithRSAEncryption signature
 +TLS ticket lifetime hint: 300
 +OCSP stapling: not supported
 +Cipher ordering: server
 +Curves ordering: server
 +Curves fallback: False
 +</code>
 +
 +Die Bewertung der einzelnen Chiffren müssen wir hier immer noch selbst vornehmen; hilfreiche Informationen hierzu findet man z.B. im Buch **//[[https://www.feistyduck.com/books/bulletproof-ssl-and-tls/|BULLETPROOF SSL AND TLS]]//** von **[[http://blog.ivanristic.com/|Ivan Ristić]]**.
 +
 +
  
 ====== Links ====== ====== Links ======
Zeile 1755: Zeile 1914:
   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**   * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**   * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
- 
-~~DISCUSSION~~ 
- 
  
  • centos/mail_c7/dovecot_4.1406316769.txt.gz
  • Zuletzt geändert: 25.07.2014 19:32.
  • von django