La situation est que j'essaie de désactiver SSLv3 dans Dovecot en ajoutant !SSLv3
à la ssl_cipher_list
:
ssl_cipher_list = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:!SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
redémarrez le Dovecot, puis vérifiez le journal, j'ai obtenu:
29 octobre 05:00:46 courrier pigeonnier: imap-login: déconnecté (aucune tentative d'authentification): rip = 118.71.13.x, lip = 107.170.105.y, établissement de liaison TLS: SSL_accept () a échoué: erreur: 1408A0C1: SSL routines: SSL3_GET_CLIENT_HELLO: pas de chiffrement partagé
ce que je ne comprends pas, c'est que la liste de chiffrement ci-dessus prend en charge certains TLSv1.2:
openssl ciphers -v 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:!SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA' | grep -i tls
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
Exécuter tcpdump
tout en utilisant Thunderbird pour se connecter à Dovecot:
Secure Sockets Layer
SSL Record Layer: Handshake Protocol: Client Hello
Content Type: Handshake (22)
Version: TLS 1.0 (0x0301)
Length: 177
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 173
Version: TLS 1.2 (0x0303)
Random
GMT Unix Time: May 4, 2099 21:21:49.000000000 ICT
Random Bytes: db3c676892cb86a10350aae7fa67868ed4935862593455bc...
Session ID Length: 0
Cipher Suites Length: 46
Cipher Suites (23 suites)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
Vous pouvez voir qu'au moins le client et le serveur prennent en charge ECDHE-RSA-AES128-GCM-SHA256
, pourquoi l'échec de la poignée de main?
Secure Sockets Layer
TLSv1.2 Record Layer: Alert (Level: Fatal, Description: Handshake Failure)
Content Type: Alert (21)
Version: TLS 1.2 (0x0303)
Length: 2
Alert Message
Level: Fatal (2)
Description: Handshake Failure (40)
La situation est que j'essaie de désactiver SSLv3 dans Dovecot en ajoutant! SSLv3 à la liste ssl_cipher_list:
C'est une mauvaise idée car il n'y a pas de chiffres spécifiques pour TLS1.0 et TLS1.1, c'est-à-dire qu'ils utilisent les mêmes chiffres que SSL 3.0. Seul TLS1.2 a défini de nouveaux chiffres. Cela signifie que si vous désactivez les chiffrements SSLv3, aucun client SSLv3 ne peut se connecter, mais également aucun client TLS1.0 ou TLS1.1. Ce n'est probablement pas ce que vous aviez l'intention de faire.
La vraie façon n'est pas de désactiver les chiffrements SSLv3, mais de désactiver le protocole SSLv3, mais je ne vois pas d'option pour cela dans Dovecot 2.0. Selon https://zmap.io/sslv3/servers.html il y a un ssl_protocols
paramètre dans Dovecot 2.1+, mais la même page recommande également à tort de désactiver les chiffrements SSLv3 dans Dovecot 2, ce qui est tout simplement faux.
iirc ssl_ciphers
n'est pas le bon endroit pour désactiver un protocole, essayez:
# dovecot
ssl_protocols = !SSlv2 !SSLv3
après cela, je suggère de tester votre serveur avec le script de testssl.sh