Dans le cadre de la documentation associée à ce produit, nous nous efforçons d’utiliser un langage exempt de préjugés. Dans cet ensemble de documents, le langage exempt de discrimination renvoie à une langue qui exclut la discrimination en fonction de l’âge, des handicaps, du genre, de l’appartenance raciale de l’identité ethnique, de l’orientation sexuelle, de la situation socio-économique et de l’intersectionnalité. Des exceptions peuvent s’appliquer dans les documents si le langage est codé en dur dans les interfaces utilisateurs du produit logiciel, si le langage utilisé est basé sur la documentation RFP ou si le langage utilisé provient d’un produit tiers référencé. Découvrez comment Cisco utilise le langage inclusif.
Cisco a traduit ce document en traduction automatisée vérifiée par une personne dans le cadre d’un service mondial permettant à nos utilisateurs d’obtenir le contenu d’assistance dans leur propre langue. Il convient cependant de noter que même la meilleure traduction automatisée ne sera pas aussi précise que celle fournie par un traducteur professionnel.
Ce document décrit Processus de vérification de l'identité du serveur TLS (Transport Layer Security) pour l'appliance de sécurité de la messagerie Cisco (ESA)
Le processus de vérification TLS est essentiellement un processus de validation en deux étapes :
Cela implique la vérification des éléments suivants :
Il s'agit d'un processus de validation de l'identité présentée par le serveur (contenue dans le certificat de clé publique X.509) par rapport à l'identité de référence du serveur.
Continuons avec la terminologie des noms d'identité décrite dans la RFC 6125.
Remarque : l'identité présentée est un identifiant présenté par un certificat de clé publique X.509 du serveur qui peut inclure plusieurs identifiants présentés de différents types. Dans le cas d'un service SMTP, il est contenu sous la forme d'une extension subjectAltName de type dNSName ou sous la forme du CN (Common Name) dérivé du champ d'objet.
Remarque : l'identité de référence est un identificateur construit à partir d'un nom de domaine DNS complet qu'un client attend qu'un service d'application présente dans le certificat.
Le processus de vérification est principalement important pour un client TLS, car en général, un client lance une session TLS et un client doit authentifier la communication. Pour ce faire, le client doit vérifier si l'identité présentée correspond à l'identité de référence. L'important est de comprendre que la sécurité du processus de vérification TLS pour la livraison du courrier est presque entièrement basée sur le client TLS.
La première étape de la validation de l’identité du serveur consiste à déterminer l’identité de référence par le client TLS. La liste des identificateurs de référence que le client TLS juge acceptables dépend de l’application. De plus, une liste d'identificateurs de référence acceptables doit être établie indépendamment des identificateurs présentés par le service. [rfs6125#6.2.1]
L'identité de référence doit être un nom de domaine DNS complet et peut être analysée à partir de n'importe quelle entrée (ce qui est acceptable pour un client et considéré comme sécurisé). L'identité de référence doit être un nom d'hôte DNS auquel le client tente de se connecter.
Le nom de domaine du courrier électronique destinataire est une identité de référence qui est directement exprimée par l'utilisateur, par l'intention d'envoyer un message à un utilisateur particulier dans un domaine particulier, et qui répond également à une exigence d'être un nom de domaine complet auquel un utilisateur tente de se connecter. Elle est cohérente uniquement dans le cas d'un serveur SMTP auto-hébergé dont le propriétaire et le gestionnaire sont identiques et où le serveur n'héberge pas trop de domaines. Comme chaque domaine doit être répertorié dans le certificat (comme l'une des valeurs subjectAltName : dNSName). Du point de vue de la mise en oeuvre, la plupart des autorités de certification limitent le nombre de noms de domaine à 25 entrées (jusqu'à 100). Cela n'est pas accepté dans le cas de l'environnement hébergé, pensons aux fournisseurs de services de messagerie électronique (ESP) où les serveurs SMTP de destination hébergent des milliers et des milliers de domaines. Cela ne s'adapte pas.
L'identité de référence explicitement configurée semble être la réponse, mais cela impose certaines contraintes, car il est nécessaire d'associer manuellement une identité de référence au domaine source pour chaque domaine de destination ou d'« obtenir les données d'un service tiers de mappage de domaine dans lequel un utilisateur humain a explicitement placé une confiance et avec lequel le client communique via une connexion ou une association qui fournit à la fois une authentification mutuelle et un contrôle d'intégrité ». [RFC6125#6.2.1]
Conceptuellement, cela peut être considéré comme une « requête MX sécurisée » unique au moment de la configuration, avec le résultat en permanence mis en cache sur le MTA pour se protéger contre toute compromission DNS pendant l'état d'exécution. [2]
Cela permet une authentification plus forte uniquement avec les domaines « partenaires », mais pour les domaines génériques qui n'ont pas été mappés, cela ne passe pas l'examen et cela n'est pas non plus à l'abri des modifications de configuration du côté du domaine de destination (comme les modifications de nom d'hôte ou d'adresse IP).
L'étape suivante du processus consiste à déterminer une identité présentée. L'identité présentée est fournie par un certificat de clé publique X.509 du serveur, comme extension subjectAltName de type dNSName ou comme Common Name (CN) trouvé dans le champ d'objet. Où il est parfaitement acceptable que le champ objet soit vide, tant que le certificat contient une extension subjectAltName qui inclut au moins une entrée subjectAltName.
Bien que l'utilisation de Common Name soit toujours en pratique, elle est considérée comme déconseillée et la recommandation actuelle est d'utiliser des entrées subjectAltName. La prise en charge de l'identité de Common Name reste pour assurer la rétrocompatibilité. Dans ce cas, un dNSName de subjectAltName doit être utilisé en premier et uniquement lorsqu'il est vide, le nom commun est vérifié.
Remarque : le nom commun n'est pas fortement typé car un nom commun peut contenir une chaîne conviviale pour le service, plutôt qu'une chaîne dont la forme correspond à celle d'un nom de domaine DNS complet
À la fin, lorsque les deux types d’identités ont été déterminés, le client TLS doit comparer chacun de ses identifiants de référence aux identifiants présentés afin de trouver une correspondance.
ESA permet d'activer TLS et la vérification de certificat lors de la livraison à des domaines spécifiques (à l'aide de la page Contrôles de destination ou de la commande destconfig CLI). Lorsque la vérification du certificat TLS est requise, vous pouvez choisir l'une des deux options de vérification depuis AsyncOS version 8.0.2. Le résultat attendu de la vérification peut varier en fonction de l'option configurée. À partir de 6 paramètres différents pour TLS, disponibles sous le contrôle de la destination, il y a deux paramètres importants qui sont responsables de la vérification du certificat :
CLI: destconfig
Do you want to use TLS support?
1. No
2. Preferred
3. Required
4. Preferred - Verify
5. Required - Verify
6. Required - Verify Hosted Domains
[6]>
Un processus de vérification TLS pour l'option (4) Preferred - Verify est identique à (5) Required - Verify, mais l'action entreprise en fonction des résultats diffère comme présenté dans le tableau ci-dessous. Les résultats pour l'option (6) Required - Verify Hosted Domains est identique à (5) Required - Verify mais un flux de vérification TLS est tout à fait différent.
Paramètres TLS | Signification |
4. Préféré (vérification) | TLS est négocié de l'appliance de sécurité de la messagerie vers le ou les MTA du domaine. L'appliance tente de vérifier le certificat des domaines. Trois résultats sont possibles :
|
5. Obligatoire (vérification) |
TLS est négocié de l'appliance de sécurité de la messagerie vers le ou les MTA du domaine. La vérification du certificat de domaines est requise. Trois résultats sont possibles :
|
La différence entre les options TLS Required - Verify et TLS Required - Verify Hosted Domain réside dans le processus de vérification d'identité. La manière dont l'identité présentée est traitée et le type d'identifiants de référence autorisés à être utilisés font une différence par rapport au résultat final. L'objectif de la description ci-dessous ainsi que du document entier est de rapprocher ce processus de l'utilisateur final. Comme la compréhension incorrecte ou imprécise de ce sujet peut avoir un impact sur la sécurité du réseau de l'utilisateur.
L'identité présentée est d'abord dérivée de subjectAltName - dNSName extension et s'il n'y a pas de correspondance ou si subjectAltName extension n'existe pas, CN-ID - Common Name from subject field est vérifié.
La liste d'identité de référence (REF-ID) est construite à partir d'un domaine destinataire ou d'un domaine destinataire et d'un nom d'hôte dérivé d'une requête DNS PTR exécutée sur l'adresse IP à laquelle le client est connecté. Note : Dans ce cas particulier, différentes identités de référence sont comparées à différentes vérifications d'identité présentées.
~= représente la correspondance exacte ou générique
L'identité présentée (dNSName ou CN-ID) est comparée aux identités de référence acceptées jusqu'à ce qu'elle corresponde et dans l'ordre dans lequel elles sont répertoriées ci-dessous.
En résumé, avec l'option 'TLS Required - Verify', il n'y a pas de nom d'hôte MX comparé à dNSName ou CN, un RR PTR DNS est vérifié uniquement pour CN et n'est mis en correspondance que si la cohérence DNS est préservée A(PTR(IP)) = IP, les tests exacts et génériques pour dNSName et CN sont effectués.
L'identité présentée est d'abord dérivée de l'extension subjectAltName de type dNSName. S'il n'y a aucune correspondance entre le dNSName et l'une des identités de référence acceptées (REF-ID), la vérification échoue, peu importe si CN existe dans le champ d'objet et pourrait passer une autre vérification d'identité. Le CN dérivé du champ objet est validé uniquement lorsque le certificat ne contient aucune extension subjectAltName de type dNSName.
Rappelez-vous que l'identité présentée (dNSName ou CN-ID) est comparée aux identités de référence acceptées jusqu'à ce qu'elle corresponde et dans l'ordre où elles sont répertoriées ci-dessous.
CN est validé uniquement lorsque dNSName n'existe pas dans le certificat. L'ID CN est comparé à la liste ci-dessous des identités de référence acceptées.
Lorsque la route SMTP est configurée et que l'identité présentée ne correspond pas au domaine du destinataire de l'e-mail, tous les noms de route FQDN sont comparés et s'ils ne correspondent pas, il n'y a pas d'autres vérifications. Avec des routes SMTP explicitement configurées, aucun nom d'hôte MX n'est considéré comme étant comparé à une identité présentée. L'exception ici fait une route SMTP qui a été définie comme une adresse IP.
Les règles suivantes s'appliquent en cas de routes SMTP explicitement configurées :
Lorsque nous parlons de l'option Vérification TLS requise pour les domaines hébergés, la façon dont ESA s'est connecté à un serveur de destination est importante pour le processus de vérification TLS en raison des routes SMTP explicitement configurées qui fournissent une identité de référence supplémentaire à prendre en compte dans le processus.
~= représente la correspondance exacte ou générique
Prenons un exemple de la vie réelle, mais pour le domaine du destinataire : example.com. Ci-dessous, j'ai essayé de décrire toutes les étapes nécessaires à la vérification manuelle de l'identité du serveur.
example.com -> IN MX mx01.subd.emailhosted.not.
example.com -> IN MX mx02.subd.emailhosted.not.
mx01.subd.emailhosted.not. -> IN A 192.0.2.1
mx02.subd.emailhosted.not. -> IN A 192.0.2.2
192.0.2.1 -> IN PTR mx0a.emailhosted.not.
192.0.2.2 -> IN PTR mx0b.emailhosted.not.
mx0a.emailhosted.not. -> IN A 192.0.2.1
mx0b.emailhosted.not. -> IN A 192.0.2.2
Remarque : les noms d'hôte MX et les noms revDNS ne correspondent pas dans ce cas
$ echo QUIT |openssl s_client -connect mx0a.emailhosted.not:25 -starttls smtp 2>/dev/null| openssl x509 -text | grep -iEo 'DNS:.*|CN=.*'
CN=thawte SHA256 SSL CA
CN=*.emailhosted.not
DNS:*.emailhosted.not, DNS:emailhosted.not
echo QUIT |openssl s_client -connect mx0b.emailhosted.not:25 -starttls smtp 2>/dev/null| openssl x509 -text | grep -iEo 'DNS:.*|CN=.*'
CN=thawte SHA256 SSL CA
CN=*.emailhosted.not
DNS:*.emailhosted.not, DNS:emailhosted.not
mx01.subd.emailhosted.not. -> IN A 192.0.2.1
PTR(IP): 192.0.2.1 -> IN PTR mx0a.emailhosted.not.
A(PTR(IP)): mx0a.emailhosted.not. -> IN A 192.0.2.1
Le nom de domaine PTR valide l'identité et comme le certificat est un certificat signé par une autorité de certification, il valide l'ensemble du certificat et la session TLS est établie.
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
16-Apr-2018 |
Première publication |