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

Вопрос или проблема

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

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

Безопасное соединение с защищенным доменом ‘ourclient.com’ на соединителе ‘Основная внешняя почта’ не может быть установлено, потому что проверка сертификата Transport Layer Security (TLS) для ourclient.com завершилась ошибкой со статусом ‘UntrustedRoot.’ Свяжитесь с администратором ourclient.com для решения проблемы или уберите домен из списка защищенных доменов.

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

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

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

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

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

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

openssl s_client -connect mail.example.com:465

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

Можно посетить https://www.checktls.com и выполнить тест бесплатно.

Если у вас нет 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. Посетите https://www.checktls.com/TestReceiver
  2. В поле eMail Target введите имя хоста SMTP-сервера или IP-адрес, который вы хотите протестировать (например: smtp.domain.com)
  3. В Output Format выберите CertDetail
  4. Запустите тест
  5. Ищите Issuer в результатах

как сохранить вывод сертификата? .pem .p12 .asc или что-то еще?

—–BEGIN CERTIFICATE—– … —–END CERTIFICATE—–

спасибо

Ответ или решение

Чтобы подробно ответить на вопрос о том, как инспектировать TLS-сертификат удаленного SMTP-сервера, начнем с теоретической части.

Теория

Транспортный уровень безопасности (TLS) используется для шифрования связи между почтовыми серверами для защиты передаваемой информации. Когда ваш сервер Exchange пытается установить защищенное соединение с другим сервером с помощью SMTP, он выполняет процесс проверки сертификата, который может завершиться неудачно, если сертификат не доверен или его цепочка доверия неполная. Ошибка "UntrustedRoot" возникает, когда сертификат, предоставленный другим сервером, не может быть связан с доверенным корневым сертификатом на вашей стороне.

Ваша задача — определить, какой именно сертификат используется, и почему он не доверится. Здесь важно установить, выпустил ли сертификат авторизованный центр сертификации (CA) или он самоподписан, что в корпоративной среде иногда случается.

Пример

Для инспекции сертификата удаленного SMTP-сервера можно воспользоваться несколькими инструментами и методами:

  1. OpenSSL: Это мощный инструмент для инспекции сертификатов. Команда для проверки с использованием STARTTLS выглядит так:

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

    Или если сервер использует стандартный порт для TLS:

    openssl s_client -connect mail.example.com:465

    Эти команды позволят вам увидеть детали сертификата, включая его Issuer, Subject, и дату окончания. Вы также сможете увидеть цепочку сертификации, которая нужна для анализа проблем доверия.

  2. CheckTLS.com: Это онлайн-сервис, который позволяет проверить, насколько правильно настроены сертификаты вашего сервера. Для этого выполните следующие шаги:

    • Перейдите на https://www.checktls.com/TestReceiver.
    • Введите в поле eMail Target доменное имя или IP-адрес SMTP-сервера.
    • Выберите CertDetail в разделе Output Format.
    • Нажмите Run Test и проверьте данные по разделу Issuer.
  3. Python: Если вы хотите программно проверить сертификат, можно воспользоваться следующим скриптом на Python:

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

    Замените [hostname] на нужное имя сервера.

Применение

Используя описанные выше методы, вы сможете:

  • Определить текущие параметры сертификата и сравнить их с теми, что должны быть.
  • Убедиться, что сертификат выпущен доверенным CA, который присутствует в списке доверенных корневых сертификатов на вашем сервере.
  • Обновить список доверенных корневых сертификатов, если сертификат клиента выпущен доверенной, но ещё не добавленной к вам организацией.

Важно также сохранить сертификат для дальнейшего анализа. Например, с помощью OpenSSL можно сохранить сертификат в формате PEM с помощью перенаправления вывода:

echo | openssl s_client -connect mail.example.com:25 -starttls smtp > certificate.pem

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

Помните, что в зависимости от политик безопасности вашей компании изменения в списке доверенных сертификатов могут потребовать дополнительных согласований. 퇴 Inform IT-руководство, если вы заметите, что сертификат изменился неожиданно или сертификат был заменен самоподписанным, так как это может указывать на потенциальную проблему безопасности.

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

Оцените материал
Добавить комментарий

Капча загружается...