2

Как определяются отпечатки смарт-хоста ? От них зависит только smarthost или клиент?

Некоторое время назад я сконфигурировал свой отпечаток пальца ghost smarthost в моей старой Ubuntu, и он работал хорошо. Однако при повторной настройке в моем новом Ubuntu 18.04 я обнаружил, что старые настройки больше не работают.

Потому что я использовал не мой смарт-хост gmail, а интернет-провайдера, поэтому я не знаю, когда он сломается. Итак, теперь мой вопрос: сломался ли он, потому что gmail изменил свой отпечаток смарт-хоста (очень маловероятно), или отпечатки смарт-хоста отличаются на разных машинах? Т.е. я не могу слепо копировать то, что работало, даже в новую ОС на той же машине, верно?

Кроме того, я попробовал предыдущий способ получить отпечатки пальцев smarthost, как в статье, но он не работает для меня сейчас. Как правильно получить отпечатки пальцев smarthost?

Спасибо.

1 ответ1

4

Там нет такого понятия, как "отпечаток пальца smarthost". Это отпечатки сертификатов TLS, которые в данном контексте просто принадлежат ретрансляционным серверам SMTP (smarthosts), но здесь все в равной степени относится к IMAPS, HTTPS, FTPS ... ко всему, что использует TLS.

Отпечатки сертификатов TLS обычно вообще не зависят от клиента: это хэш SHA1 (или SHA256) сертификата сервера, и обычно серверы используют один и тот же сертификат для всех.

Но одним исключением могут быть серверы за балансировщиком нагрузки: на больших сайтах может быть несколько серверов за одним именем, и хотя они могут использовать один сертификат, это не гарантировано - они также могут легко использовать 20 или 50 сертификатов одновременно.

И даже для одного и того же сервера очень вероятно, что отпечаток пальца изменится - он будет отличаться при каждом обновлении сертификата (потому что даты действия меняются) или переиздании по любой другой причине (новый закрытый ключ или новый эмитент, или новое доменное имя ...)

Если раньше сертификаты выдавались в течение 3-5 лет (и устанавливались вручную), то новая практика заключается в автоматизации процесса и использовании краткосрочных сертификатов, обычно 90 или даже 45 дней. Google делает это с ок. 2014, и вот как Let's Encrypt работает с первого дня. (По правилам CA/B Forum даже "стандартные" долгоживущие сертификаты TLS теперь ограничены 2 годами.)

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


На практике по крайней мере дистрибутивы Linux достаточно быстро обновляют свои пакеты сертификатов CA. (Я имею в виду, если они этого не делают, вы уверены, что вообще хотите запустить эту ОС на своем компьютере?)

Поэтому я бы сказал, что статья пытается напугать своих читателей неправильными проблемами. Гораздо большее беспокойство вызывает то, что пакеты сертификатов CA часто включают несколько теневых контролируемых правительством CA из разных стран.

Альтернатива 1: если вы хотите, вы можете создать собственный tls_trust_file содержащий только один CA, который использует провайдер: например, сказать msmtp, что нужно доверять только DigiCert и ничему другому. Это распространенный метод, называемый "CA pinning". Но у него все еще есть шанс поломки, так как администраторы сервера могут свободно выбирать, с какими ЦС они будут работать.

Альтернатива 2: Некоторые программы поддерживают другой тип отпечатка пальца - отпечатки SPKI (хеши subjectPublicKeyInfo). Они представляют только необработанную пару ключей и не включают никаких дополнительных метаданных сертификата. Сервер может периодически обновлять свой сертификат, сохраняя одну и ту же пару ключей и, следовательно, один и тот же отпечаток SPKI.

(Однако, даже если ваш клиент поддерживает дактилоскопию SPKI (msmtp нет), он будет иметь преимущество только в том случае, если вы знаете, что администраторы сервера обновляют свои сертификаты таким образом. Большую часть времени они не делают.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .