Mam serwer foo.example.com pod adresem 192.0.2.1
Uruchamia exim, aby otrzymywać e-maile z kilku moich domen.
Każda moja domena ma rekord MX wskazujący na mx.example.com, który jest rozwiązywany do 192.0.2.1
Jeśli chcę zaoferować eximowi szyfrowanie TLS dla przychodzących połączeń e-mail, jaką nazwę hosta powinienem umieścić w certyfikacie SSL?
- foo.example.com, ponieważ tak powie serwer w HELO?
- mx.example.com, ponieważ jest to nazwa hosta, z którą klienci będą się łączyć?
http://www.checktls.com sugeruje, że to drugie jest poprawne, ale nie mogę znaleźć ostatecznej odpowiedzi.
ssl
smtp
certificate
exim
David North
źródło
źródło
Odpowiedzi:
W rzeczywistości nigdzie nie jest to wyraźnie określone, a to, czy serwer powinien być „zaufany”, zależy od klienta (który może oczywiście być innym serwerem poczty) łączącego się z nim; cytowanie z odpowiedniego RFC ( RFC 2487 ):
Zasadniczo oznacza to, że gdy serwer oferuje szyfrowanie TLS przy użyciu danego certyfikatu, decyzja o jego przyjęciu lub odrzuceniu zależy całkowicie od drugiej strony, która prawdopodobnie będzie chciała, aby nazwa na certyfikacie była taka sama, z którą się połączył, ale mogłaby bardzo dobrze to zaakceptuj, nawet jeśli nie pasuje.
Ale czekaj, jest więcej. Cytując ponownie z tego samego dokumentu RFC:
Tak więc to, co serwer mówi w odpowiedzi na HELO / EHLO przed uzgadnianiem TLS, nie wydaje się w ogóle mieć znaczenia.
Z mojego doświadczenia wynika, że samopodpisane certyfikaty działają całkiem dobrze na internetowych serwerach pocztowych, co oznacza, że inne serwery pocztowe nawet nie zadają sobie trudu, aby je zweryfikować, po prostu z przyjemnością przyjmą wszystko, co może zapewnić szyfrowanie TLS, niezależnie od wystawiającego nazwa organu lub podmiotu.
źródło
MTA dostarczający pocztę do twojej domeny będzie szukał rekordu MX (który da nazwę hosta), a następnie wyszuka rekord A dla tej nazwy hosta. Dlatego nazwa hosta, z którym się łączy, to nazwa hosta MX, a więc to, co zostanie zweryfikowane na podstawie zwykłej nazwy certyfikatu SSL. Weryfikacja nazwy hosta HELO nie ma sensu, ponieważ serwer może podać dowolną nazwę hosta HELO - nie zapewnia dodatkowych zabezpieczeń.
To powiedziawszy, ścisłe weryfikowanie certyfikatów SSL podczas dostarczania poczty nie jest obecnie szczególnie przydatne, ponieważ MTA (prawie zawsze) powrócą do dostarczania bez SSL, ponieważ tak właśnie działa SMTP. Rozsądną konfiguracją jest zatem użycie protokołu SSL, jeśli serwer MX go oferuje, niezależnie od tego, czy certyfikat SSL weryfikuje, czy nie (ponieważ szyfrowanie bez uwierzytelnienia jest lepsze niż brak szyfrowania i brak uwierzytelnienia). Dlatego w tym celu równie dobrze możesz użyć certyfikatu z podpisem własnym.
źródło
Weryfikacja certyfikatu serwera i sprawdzenie, czy jest on zgodny z nazwą hosta serwera, jest wyłącznie rolą klienta w przypadku dowolnego protokołu używającego protokołu SSL / TLS.
W związku z tym nazwa hosta w certyfikacie powinna odpowiadać nazwie, do której klient próbuje uzyskać dostęp.
Gdy połączenie SSL / TLS jest inicjowane z góry (SMTPS), serwer nie ma możliwości zobaczenia komunikatu HELO przed nawiązaniem połączenia, więc musi użyć tego, z którym wysłał żądanie.
Korzystając z protokołu SSL / TLS po
STARTTLS
, klient nadal zamierza rozmawiać z serwerem, na którym został skonfigurowany, więc nadal powinien to sprawdzić. W przeciwnym razie ataki MITM byłyby możliwe:W obu przypadkach należy użyć adresu MX.
Reguły dopasowywania nazw hostów zostały ostatnio zebrane w różnych protokołach w RFC 6125 , ale niewielu klientów w pełni je implementuje (jest to raczej najlepsza praktyka RFC niż kompletna zmiana i wciąż jest całkiem nowa).
W swoim dodatku podsumowuje to, co istniało wcześniej o SMTP (wzięte z RFC 3207 i RFC 4954 ). W szczególności „ Klient NIE MOŻE używać żadnej formy nazwy hosta serwera pochodzącej z niezabezpieczonego zdalnego źródła (np. Niepewne wyszukiwanie DNS). ” (Co oczywiście dotyczy banera serwera). Niezależnie od tego, zasady legacy SMTP były nieco bardziej zrelaksowany niż HTTPS dotyczące Subject Alternative Names ( powinien zamiast musi być używany).
Współczesnym sposobem jest zdecydowanie umieszczenie nazwy hosta we wpisie DNS Alternatywna nazwa podmiotu. Odradza się również używanie symboli wieloznacznych .
źródło
Myślę, że najlepiej byłoby skopiować to, co zostało zrobione w praktyce. Sprawdziłem adres e-mail yahoo.com za pomocą http://checktls.com Mam nadzieję, że w yahoo użyli innej domeny dla swojej nazwy hosta i dla swojej domeny mx. Ich nazwa hosta to yahoo.com, a ich domena mx kończy się na yahoodns.net
Wynik sprawdzianów: certyfikat SSL CN = domena MX (* .yahoodns.net)
Zrobiłem to samo z Cisco i miałem taki sam wynik.
źródło
W przypadku szyfrowania SSL / TLS klient zawsze sprawdza zgodność między „rzeczywistą” / „zadeklarowaną” nazwą hosta na zdalnym komputerze a informacjami zawartymi w certyfikacie.
Prawdopodobnie powinieneś ustawić foo.example.com lub wygenerować certyfikat z symbolami wieloznacznymi ;-)
źródło