J'ai un serveur foo.example.com au 192.0.2.1
Il s'exécute pour recevoir des e-mails pour plusieurs de mes domaines.
Mes domaines ont chacun un enregistrement MX pointant vers mx.example.com, qui se résout en 192.0.2.1
Si je veux proposer à exim le cryptage TLS pour les connexions e-mail entrantes, quel nom d'hôte dois-je mettre dans le certificat SSL?
- foo.example.com parce que c'est ce que le serveur dira dans le HELO?
- mx.example.com parce que c'est le nom d'hôte auquel les clients se seront connectés?
http://www.checktls.com suggère que ce dernier est correct, mais je ne trouve pas de réponse définitive.
ssl
smtp
certificate
exim
David North
la source
la source
Réponses:
Ceci n'est en fait défini explicitement nulle part, et le fait que le serveur soit ou non "de confiance" dépend du client (qui pourrait bien sûr être un autre serveur de messagerie) s'y connectant; citant de la RFC pertinente ( RFC 2487 ):
Cela signifie essentiellement que, lorsque le serveur propose le cryptage TLS à l'aide d'un certificat donné, la décision d'accepter ou de refuser dépend entièrement de l'autre partie, qui voudra probablement que le nom sur le certificat soit le même auquel il est connecté, mais pourrait très bien l'accepter même s'il ne correspond pas.
Mais attendez, il y a plus. Citant à nouveau à partir du même RFC:
Donc, ce que le serveur dit en réponse à HELO / EHLO avant la prise de contact TLS ne semble pas vraiment avoir d'importance.
D'après mon expérience, les certificats auto-signés fonctionnent assez bien sur les serveurs de messagerie accessibles sur Internet, ce qui signifie que les autres serveurs de messagerie ne prennent même pas la peine de les valider, ils accepteront tout simplement tout ce qui peut fournir le cryptage TLS, quelle que soit la délivrance. autorité ou nom du sujet.
la source
Un MTA remettant du courrier à votre domaine va rechercher l'enregistrement MX (qui donnera un nom d'hôte), puis rechercher un enregistrement A pour ce nom d'hôte. Le nom d'hôte auquel il se connecte est donc le nom d'hôte MX, et c'est donc ce qui sera vérifié par rapport au nom commun du certificat SSL. La vérification du nom d'hôte HELO n'a pas de sens car le serveur peut fournir n'importe quel nom d'hôte HELO qu'il souhaite - il n'offre pas de sécurité supplémentaire.
Cela dit, la vérification stricte des certificats SSL lors de la livraison du courrier n'est pas particulièrement utile pour le moment, car les MTA recourront (presque toujours) à la livraison non SSL, car c'est ainsi que SMTP fonctionne pour le moment. La configuration raisonnable consiste donc à utiliser SSL si le serveur MX le propose, que le certificat SSL vérifie ou non (car le cryptage sans authentification est préférable à aucun cryptage et à aucune authentification). Vous pouvez donc aussi utiliser un certificat auto-signé à cet effet.
la source
La tâche de vérification du certificat de serveur et de sa correspondance avec le nom d'hôte du serveur est purement le rôle du client, pour tout protocole utilisant SSL / TLS.
En tant que tel, le nom d'hôte dans le certificat doit correspondre au nom auquel le client tente d'accéder.
Lorsque la connexion SSL / TLS est initiée à l'avance (SMTPS), le serveur n'a aucun moyen de voir ce que dit le message HELO avant que la connexion ne soit établie, il doit donc utiliser celui avec lequel il a fait la demande.
Lors de l'utilisation de SSL / TLS après
STARTTLS
, le client a toujours l'intention de parler au serveur avec lequel il a été configuré, c'est donc toujours ce qu'il doit vérifier. À défaut, les attaques MITM seraient possibles:Dans les deux cas, c'est l'adresse MX qui doit être utilisée.
Les règles de correspondance des noms d'hôte ont récemment été rassemblées à travers les protocoles de la RFC 6125 , mais peu de clients l'implémentent complètement (il s'agit davantage d'une RFC de meilleure pratique que d'un changement complet, et c'est encore assez récent).
Dans son annexe , il résume ce qui existait auparavant sur SMTP (extrait de RFC 3207 et RFC 4954 ). En particulier " Le client NE DOIT PAS utiliser une forme quelconque du nom d'hôte du serveur dérivé d'une source distante non sécurisée (par exemple, une recherche DNS non sécurisée). " (Qui s'applique bien sûr à la bannière du serveur). En dehors de cela, les règles héritées SMTP étaient un peu plus détendu que HTTPS concernant Subject Alternative Names ( devrait au lieu de doit être utilisé).
La manière moderne est certainement de mettre le nom d'hôte dans une entrée DNS de nom alternatif de sujet. L'utilisation de caractères génériques est également déconseillée .
la source
Je pense que le mieux serait de copier ce qui se fait dans la pratique. J'ai vérifié une adresse e-mail yahoo.com en utilisant http://checktls.com J'espère que chez yahoo, ils ont utilisé un domaine différent pour leur nom d'hôte et pour leur domaine mx. Ainsi, leur nom d'hôte est un yahoo.com et leur domaine mx se termine par yahoodns.net
Résultat de checktls: le certificat SSL CN = domaine MX (* .yahoodns.net)
J'ai fait de même avec Cisco et j'ai eu le même résultat.
la source
Dans le cryptage SSL / TLS, le client vérifie toujours la correspondance entre le nom d'hôte "réel" / "déclaré" sur la machine distante et les informations contenues dans le certificat.
Donc, vous devriez probablement définir foo.example.com ou générer un certificat générique ;-)
la source