О Smarthost TLS Отпечатки пальцев
Как определяются отпечатки SmartHost? Они зависят только от умного хоста или клиента?
Некоторое время назад я сконфигурировал свой отпечаток пальца ghost smarthost в моей старой Ubuntu, и он работал хорошо. Однако при повторной настройке в моем новом Ubuntu 18.04 я обнаружил, что старые настройки больше не работают.
Потому что я использовал не мой смарт-хост gmail, а интернет-провайдера, поэтому я не знаю, когда он сломается. Итак, теперь мой вопрос: сломался ли он, потому что gmail изменил свой отпечаток smarthost (очень маловероятно), или отпечатки пальцев smarthost различны на разных машинах? Т.е. я не могу слепо копировать то, что работало, даже в новую ОС на той же машине, верно?
Кроме того, я попробовал предыдущий способ получить отпечатки пальцев smarthost, как в статье, но он не работает для меня сейчас. Как правильно получить отпечатки пальцев smarthost?
Спасибо.
1 ответ
Нет такой вещи как "отпечаток пальца 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 нет), он будет иметь преимущество только в том случае, если вы знаете, что администраторы сервера обновляют свои сертификаты таким образом. В большинстве случаев они этого не делают.)