01 Oct 2022 
Centre d'assistance » Base de connaissances » Echec dans les échanges SMTP TLS/SSL
 Connexion [Mot de passe perdu] 
Courriel:
Mot de passe:
Se souvenir de moi:
 
 Recherche
 Détails des articles
 Echec dans les échanges SMTP TLS/SSL
Solution IceWarp toutes versions -

Symptômes 
Le problème se traduit par un échec dans les échanges SMTP sur la séquence StartTLS
Voici quelques exemples.

Session cliente :

La connexion SSL a été vérifiée et la connexion est sécurisée:
46.105.36.90    [1AD4] 16:48:40:152 Client session >>> STARTTLS
46.105.36.90    [1AD4] 16:48:40:155 Client session <<< 220 2.0.0 Ready to start TLS
46.105.36.90    [1AD4] 16:48:40:173 Client session SSL: Verified (0)
46.105.36.90    [1AD4] 16:48:40:173 Client session >>> EHLO comserver.darnis.com

La connexion n'a pas été vérifiée mais est quand même sécurisée :
2a00:1450:400c:c06::1b [1AD4] 16:48:39:267 Client session >>> STARTTLS
2a00:1450:400c:c06::1b [1AD4] 16:48:39:276 Client session <<< 220 2.0.0 Ready to start TLS
2a00:1450:400c:c06::1b [1AD4] 16:48:39:288 Client session SSL: Not verified (20) - proceed anyway
2a00:1450:400c:c06::1b [1AD4] 16:48:39:288 Client session >>> EHLO comserver.darnis.com

Erreurs possibles : 20 (Unable to Get Local User Certificate), 19 (self signed certificate in certificate chain), 18 (self signed certificate), 6 (SSL handshake failed)
Cela signifie généralement que le certificat distant est inexistant ou non valide.

La connexion sécurisée n'a pas pu être établie :
178.251.163.242 [1F70] 12:51:22 Client session <<< 250 STARTTLS
178.251.163.242 [1F70] 12:51:22 Client session >>> STARTTLS
178.251.163.242 [1F70] 12:51:22 Client session <<< 220 Go ahead with TLS
178.251.163.242 [1F70] 12:51:22 Client session TLS connection could not be established
>>> (SSLv2/v3 write client hello B ,771,22) 010001fc0303c......350084c012c008c01cc0 (512)
<<< (SSLv2/v3 read server hello A ,769,21) 0232


Session serveur :

La connexion sécurisée a été établie :
145.239.37.84   [12EC] 00:00:50:393 <<< STARTTLS
145.239.37.84   [12EC] 00:00:50:404 >>> 220 2.0.0 Ready to start TLS
145.239.37.84   [12EC] 00:00:50:430 <<< EHLO mail.icewarptech.io

La connexion sécurisée n'a pas pu être établie :
54.39.247.55    [1880] 17:31:44:299 <<< STARTTLS
54.39.247.55    [1880] 17:31:44:312 >>> 220 2.0.0 Ready to start TLS
54.39.247.55    [1880] 17:31:44:394 SSL: Handshake with client failed on 192.168.10.2:25

Le problème peut avoir plusieurs origines :
- Différence d'heure entre le serveur et le client
- Pare-feu ou routeur qui perturbent l’échange (man in the middle)
- Certificat incorrect (erreur dans la chaîne, non valide, non applicable au nom d'hôte utilisé...)
- Protocole, cryptage : version du protocole TLS/SSL utilisé
On peut consulter la documentation SSL sur http://www.openssl.org/docs/ les différentes méthodes y sont expliquées
 
Contrôle des certificats et protocoles utilisés

Il est possible de vérifier le certificat d'un serveur sur :
Par exemple :

Les protocoles utilisés par un serveur peuvent être vérifiés sur :

par exemple en version 13.0 :


Configuration du serveur
Aller dans Fichier -> Console API (mettre comme filtre ext.ssl), on peut voir et modifier la valeur des variables et la description de la méthode utilisée:

C_System_Adv_Ext_SSLServerMethod : Numéro de la méthode SSL à appliquer dans le cas des sessions serveurs SSL
C_System_Adv_Ext_SSLClientMethod : Numéro de la méthode SSL à appliquer dans le cas des sessions clientes SSL

en version 13.0, on obtient :
C_System_Adv_Ext_SSLServerMethod                         // Enum values=(0 - Default (currently the same as 6; but will be increased in future according to the actual security trends),
1 - Deprecated (the same as 3),
2 - Deprecated (the same as 3),
3 - Support SSL3 and newer (SSL3;TLS1;TLS1.1;TLS1.2),
4 - Support TLS1 and newer (TLS1;TLS1.1;TLS1.2),
5 - Support TLS1.1 and newer (TLS1.1;TLS1.2),
6 - Support TLS1.2 and newer (TLS1.2) - same as 5 on Linux RHEL5 and RHEL6),
7 - Same as 6 but TLS1.3 will be disabled (required for client renegotiation for HTTP service and - require client certificate)

 C_System_Adv_Ext_SSLClientMethod                         // Enum values=(0 - Default (currently the same as 6; but will be increased in future according to the actual security trends),
1 - Deprecated (the same as 3),
2 - Deprecated (the same as 3),
3 - Support SSL3 and newer (SSL3;TLS1;TLS1.1;TLS1.2) (Client will send out TLSv1 client hello messages including extensions and will indicate that it also understands TLSv1.1;TLSv1.2 and permits a fallback to SSLv3),
4 - Support TLS1 and newer (TLS1;TLS1.1.TLS1.2)   (Client will send out TLSv1 client hello messages including extensions and will indicate that it also understands TLSv1.1; TLSv1.2),
5 - Support TLS1.1 and newer (TLS1.1;TLS1.2) (Client will send out TLSv1.1 client hello message including extensions and will indicate that it also understands  TLSv1.2),
6 - Support TLS1.2 and newer (Client will send out TLSv1.2 client hello message) - same as 5),
7 - Same as 6 but TLS1.3 will be disabled

Il est conseillé de mettre la même méthode pour le client et le serveur sauf s'il y a un besoin avéré de ne pas le faire.
par défaut, on a
C_System_Adv_Ext_SSLServerMethod = 0
C_System_Adv_Ext_SSLClientMethod = 0

Attention : en console distante, les commentaires des variables API sont pris sur le fichier local et non sur le fichier distant



Modifié le 15/02/2022


Détails des articles
Code d'identification de l'article: 375
Créé le: 01 Jul 2014 01:09 PM

 Cette réponse m'a été utile  Cette réponse ne m'a pas été utile