Як перевірити сертифікат TLS віддаленого SMTP-сервера?


63

У нас працює сервер Exchange 2007, який працює на Windows Server 2008. Наш клієнт використовує поштовий сервер іншого постачальника. Їх політика безпеки вимагає від нас використання нав'язаних TLS. Це працювало чудово до недавнього часу.

Тепер, коли Exchange намагається доставити пошту на сервер клієнта, він записує таке:

Захищене підключення до захищеного домену домену "ourclient.com" на роз'ємі "Зовнішня пошта за замовчуванням" не вдалося встановити, оскільки перевірка сертифіката безпеки транспортного шару (TLS) для ourclient.com не вдалася зі статусом "UntrustedRoot". Щоб вирішити проблему, або видаліть домен зі списку захищених доменом, зверніться до адміністратора ourclient.com.

Видалення ourclient.com з TLSSendDomainSecureList призводить до успішної доставки повідомлень за допомогою умовно-патологічних TLS, але це в кращому випадку тимчасове вирішення.

Клієнт - надзвичайно велика міжнародна корпорація, чутлива до безпеки. Наш ІТ-контакт, який там контактує, стверджує, що не знає жодних змін у своєму сертифікаті TLS. Я неодноразово просив його визначити орган, який створив сертифікат, щоб я міг усунути помилку перевірки, але поки що він не зміг надати відповідь. Наскільки я знаю, наш клієнт міг би замінити свій дійсний сертифікат TLS на сертифікат внутрішнього сертифікату.

Хтось знає спосіб вручну перевірити сертифікат TLS віддаленого SMTP-сервера, як це можна зробити для сертифіката віддаленого сервера HTTPS у веб-браузері? Це може бути дуже корисно визначити, хто видав сертифікат і порівняти цю інформацію зі списком надійних кореневих сертифікатів на нашому сервері Exchange.

Відповіді:


100

Ви можете використовувати OpenSSL. Якщо вам потрібно перевірити сертифікат STARTTLS, просто зробіть це

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

або для стандартного безпечного SMTP-порту:

openssl s_client -connect mail.example.com:465

Гарний. Подібні помилки перевірки у OpenSSL, але набагато детальніше. Тепер ми знаємо, що проблема не обмежується лише нашим поштовим сервером.
Skyhawk

1
@Miles: Якщо ви намагаєтеся це зробити в Windows, не забувайте, що opensslце не підтримує використання магазину сертифікатів Windows, тому воно завжди буде невдалим.
grawity

3
Як я можу побачити дату закінчення терміну дії сертифіката сервера?
nimrodm

9
@nimrodm: переклади церт на "openssl x509 -text"
Dan Andreatta

2
@DanAndreatta @nimrodm Або передайте його openssl x509 -noout -datesдля коротшого виходу.
Skippy le Grand Gourou

9

Я знаю, що це давнє запитання, але все ще актуальне питання для адміністраторів, які бажають підтвердити дійсність сертифіката SSL на своїх серверах електронної пошти і сьогодні.

Ви можете відвідати https://www.checktls.com та запустити тест безкоштовно.


Це працювало для мене, було читабельніше, ніж командний рядок
marijnz0r

1
У мене виникають проблеми з пошуком тесту на сайті. Якісь покажчики?
Zero3

1
У розділі "Захищена електронна адреса електронної пошти легко" є кнопка "CheckTLS" чорного кольору.
Ketan Patel

@KetanPatel Aaaand ... Де я можу знайти розділ "Безпечний Інтернет електронною поштою легко"?
Нуль3

Соромно, це, здається, перевіряє домен для серверів SMTP, перелічених у DNS, і запитує їх, але я хотів перевірити сервер безпосередньо.
kerridge0

4

Якщо у вас немає OpenSSL, ви також можете використовувати цей фрагмент 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))

де [ім'я хоста] - сервер.

Джерело: https://support.google.com/a/answer/6180220

Це тягне бібліотеку OpenSSL для вас, що робить установку трохи простішою.


З документації модуля Python ssl : "Цей модуль використовує бібліотеку OpenSSL." Тож ця відповідь трохи вводить в оману щодо того, що відбувається.
fbmd

@fbmd Дякую за відгук. Чи краще це редагування (див. Останнє речення)?
брови

Так, це краще.
fbmd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.