Jak sprawdzić certyfikat TLS zdalnego serwera SMTP?

63

Mamy serwer Exchange 2007 działający w systemie Windows Server 2008. Nasz klient korzysta z serwera pocztowego innego dostawcy. Ich zasady bezpieczeństwa wymagają od nas stosowania wymuszonego TLS. Do niedawna działało to dobrze.

Teraz, gdy Exchange próbuje dostarczyć pocztę na serwer klienta, rejestruje następujące informacje:

Nie można ustanowić bezpiecznego połączenia z domeną zabezpieczoną domeną „ourclient.com” na łączniku „Domyślna poczta zewnętrzna”, ponieważ sprawdzanie poprawności certyfikatu TLS (Transport Layer Security) dla ourclient.com nie powiodło się ze statusem „UntrustedRoot. Skontaktuj się z administratorem ourclient.com, aby rozwiązać problem, lub usuń domenę z listy zabezpieczonej domeny.

Usunięcie ourclient.com z TLSSendDomainSecureList powoduje, że wiadomości są dostarczane pomyślnie przy użyciu oportunistycznego TLS, ale jest to w najlepszym razie tymczasowe obejście.

Klient jest niezwykle dużą, wrażliwą na bezpieczeństwo międzynarodową korporacją. Nasz dział IT twierdzi, że nie wie o żadnych zmianach w certyfikacie TLS. Kilkakrotnie prosiłem go o wskazanie organu, który wygenerował certyfikat, abym mógł rozwiązać problem z błędem weryfikacji, ale jak dotąd nie był w stanie udzielić odpowiedzi. Z tego co wiem, nasz klient mógł zastąpić ważny certyfikat TLS certyfikatem wydanym przez wewnętrzny urząd certyfikacji.

Czy ktoś zna sposób ręcznego sprawdzania certyfikatu TLS zdalnego serwera SMTP, co można zrobić w przypadku certyfikatu zdalnego serwera HTTPS w przeglądarce internetowej? Bardzo pomocne może być ustalenie, kto wystawił certyfikat i porównanie tych informacji z listą zaufanych certyfikatów głównych na naszym serwerze Exchange.

Podniebny Jastrząb
źródło

Odpowiedzi:

100

Możesz użyć OpenSSL. Jeśli musisz sprawdzić certyfikat za pomocą STARTTLS, po prostu zrób

openssl s_client -connect mail.example.com:25 -starttls smtp

lub w przypadku standardowego bezpiecznego portu smtp:

openssl s_client -connect mail.example.com:465
Dan Andreatta
źródło
Piękny. Podobne błędy sprawdzania poprawności w OpenSSL, ale dużo więcej szczegółów. Teraz wiemy, że problem nie ogranicza się do naszego serwera pocztowego.
Skyhawk
1
@Miles: Jeśli próbujesz tego w systemie Windows, nie zapomnij, że opensslnie obsługuje on magazynu certyfikatów systemu Windows, więc zawsze nie powiedzie się sprawdzanie poprawności.
grawity
3
Jak mogę zobaczyć datę ważności certyfikatu serwera?
nimrodm
9
@nimrodm: potokuj cert do „openssl x509 -text”
Dan Andreatta
2
@DanAndreatta @nimrodm Lub potokuj do openssl x509 -noout -dateskrótszego wyjścia.
Skippy le Grand Gourou,
9

Wiem, że to stare pytanie, ale wciąż aktualne pytanie nawet dzisiaj dla administratorów, którzy chcą potwierdzić ważność certyfikatu SSL na swoich serwerach e-mail.

Możesz odwiedzić https://www.checktls.com i uruchomić test za darmo.

Ketan Patel
źródło
To działało dla mnie, było bardziej czytelne niż wiersz poleceń
marijnz0r 10.04.17
1
Mam problem ze znalezieniem testu na stronie. Jakieś wskazówki?
Zero3
1
W sekcji „Internet Bezpieczny e-mail jest łatwy” znajduje się pole wprowadzania danych z przyciskiem „CheckTLS” w kolorze czarnym.
Ketan Patel
@KetanPatel Aaaand ... Gdzie mogę znaleźć sekcję „Bezpieczny internetowy e-mail jest łatwy”?
Zero3,
Szkoda, wygląda na to, że sprawdza domenę serwerów SMTP wymienionych w DNS i pyta o nie, ale chciałem sprawdzić serwer bezpośrednio.
kerridge0
4

Jeśli nie masz OpenSSL, możesz również użyć tego fragmentu kodu w języku Python:

import smtplib
import ssl

connection = smtplib.SMTP() 
connection.connect('[hostname].')
connection.starttls()
print ssl.DER_cert_to_PEM_cert(connection.sock.getpeercert(binary_form=True))

gdzie [nazwa hosta] to serwer.

Źródło: https://support.google.com/a/answer/6180220

To pociąga za sobą bibliotekę OpenSSL, co nieco ułatwia instalację.

brwi
źródło
Z dokumentacji modułu Python ssl : „Ten moduł korzysta z biblioteki OpenSSL”. Ta odpowiedź jest trochę myląca, jeśli chodzi o to, co się dzieje.
fbmd,
@fbmd Dziękujemy za opinię. Czy ta edycja jest lepsza (patrz ostatnie zdanie)?
browly
Tak, tak jest lepiej.
fbmd