Вопрос: Как проверить сертификат TLS удаленного SMTP-сервера?


У нас есть сервер Exchange 2007, работающий на Windows Server 2008. Наш клиент использует почтовый сервер другого поставщика. Их политики безопасности требуют от нас использования принудительного TLS. До недавнего времени это работало нормально.

Теперь, когда Exchange пытается доставить почту на сервер клиента, он регистрирует следующее:

Безопасное соединение с доменом, защищенным доменом «ourclient.com» на соединителе «Внешняя почта по умолчанию», не может быть установлено, поскольку проверка сертификата безопасности транспортного уровня (TLS) для нашего клиента не прошла со статусом «UntrustedRoot». Обратитесь к администратору нашего клиента, чтобы устранить проблему или удалить домен из списка, защищенного доменом.

Удаление ourclient.com из TLSSendDomainSecureList заставляет сообщения доставляться успешно с использованием оппортунистических TLS, но это в лучшем случае временное решение.

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

Кто-нибудь знает, как вручную проверять сертификат TLS удаленного SMTP-сервера, как это можно сделать для сертификата удаленного HTTPS-сервера в веб-браузере? Было бы очень полезно определить, кто выдал сертификат, и сравнить эту информацию со списком доверенных корневых сертификатов на нашем сервере Exchange.


46
2018-04-12 15:18


Источник




Ответы:


Вы можете использовать OpenSSL. Если вам нужно проверить сертификат с помощью STARTTLS, то просто сделайте

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

или для стандартного безопасного порта smtp:

openssl s_client -connect mail.example.com:465

80



Красивый. Подобные ошибки проверки в OpenSSL, но гораздо более подробно. Теперь мы знаем, что проблема не ограничивается нашим почтовым сервером. - Skyhawk
@Miles: Если вы пытаетесь это сделать в Windows, не забывайте, что openssl не поддерживает использование хранилища сертификатов Windows, поэтому он всегда будет отказываться от проверки. - grawity
Как я могу увидеть дату истечения срока действия сертификата сервера? - nimrodm
@nimrodm: передать сертификат в "openssl x509 -text" - Dan Andreatta
@DanAndreatta @nimrodm Или проведите его до openssl x509 -noout -dates для более короткого выхода. - Skippy le Grand Gourou


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

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


8



Это сработало для меня, было более читаемым, чем в командной строке - marijnz0r
У меня возникли проблемы с поиском теста на сайте. Любые указатели? - Zero3
В разделе «Безопасная электронная почта электронной почты просто» отображается поле ввода с кнопкой «CheckTLS» черного цвета. - Ketan Patel


Если у вас нет 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))

где [hostname] - сервер.

Источник: https://support.google.com/a/answer/6180220

Это доставит вам библиотеку OpenSSL, что упрощает установку.


1



Из Документация модуля Python ssl: «Этот модуль использует библиотеку OpenSSL». Таким образом, этот ответ немного вводит в заблуждение с точки зрения того, что происходит. - fbmd
@fbmd Спасибо за отзыв. Улучшено ли это редактирование (см. Последнее предложение)? - browly
Да, это лучше. - fbmd