Как проверить сертификат 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»
Дэн Андреатта,

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

9

Я знаю, что это старый вопрос, но все еще актуальный вопрос даже сегодня для администраторов, желающих подтвердить действительность SSL-сертификата на своих почтовых серверах.

Вы можете посетить https://www.checktls.com и запустить тест бесплатно.


Это сработало для меня, было более читабельным, чем командная строка
marijnz0r

1
У меня проблемы с поиском теста на сайте. Есть указатели?
Ноль3

1
В разделе «Безопасная электронная почта в Интернете» есть поле ввода с кнопкой «CheckTLS» черного цвета.
Кетан Патель

@KetanPatel А-а-а ... Где я могу найти раздел «Безопасная электронная почта в Интернете»?
Ноль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.