Thunderbird не обновляет сертификат, продолжает использовать старый и сообщает, что он истек.

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

У меня есть почтовый сервер, где у меня есть SSL-сертификаты Let’s Encrypt, которые истекают каждые 3 месяца, и certbot автоматически их обновляет. Если я получаю доступ к серверу через веб-сайт в браузере, используется правильный и самый новый SSL-сертификат, но Thunderbird жалуется, что SSL-сертификат недействителен, т.е. он истек.

Жалоба отображается через диалоговое окно, и если я нажимаю, чтобы просмотреть сертификат через это окно, оно показывает старый сертификат, который действительно истек. Однако, если я нажимаю кнопку “Получить сертификат”, эта кнопка сереет, но ничего больше не происходит. Я пробовал щелкнуть правой кнопкой мыши на имени адреса электронной почты (аккаунта) в Thunderbird, перейти в Настройки -> Безопасность и удалить все сертификаты для домена, но, тем не менее, все равно остается старый сохраненный сертификат.

Моя конфигурация – dovecot + postfix.

Есть хоть какие-то идеи?

Thunderbird не использует тот же сервер для доступа к почте, как это делает браузер. Браузер подключается к веб-серверу через HTTP/HTTPS, в то время как Thunderbird подключается к почтовому серверу через протоколы IMAP/IMAPs или POP3/POP3s для получения почты и протокол SMTP для отправки. Это отдельные серверы с отдельной конфигурацией, что означает, что их необходимо настроить на использование соответствующих сертификатов в первую очередь, и их также нужно перезапускать, когда сертификаты обновляются.

Хотя невозможно сказать, что конкретно включает ваша установка (ИЗМЕНЕНИЕ: после редактирования вопроса стало ясно, что это установка, которую я описал), общей практикой является использование dovecot для получения почты и postfix для отправки. Так что вам, возможно, стоит изучить это программное обеспечение и конфигурации на вашей (неизвестной) системе и убедиться, что они обновляются и перезапускаются каждый раз, когда сертификаты меняются.

Dovecot может потребовать перезагрузки. У меня был именно такой случай с Postfix+Dovecot+certbot. Certbot показывал, что сертификат уже обновлен, но сервер по-прежнему использовал истекший сертификат. Я смог это увидеть, протестировав с помощью openssl (Ubuntu):

openssl s_client -connect mydomain.com:993 -quiet
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = mydomain.com
verify error:num=10:certificate has expired
notAfter=Dec  5 15:42:11 2020 GMT
verify return:1
depth=0 CN = mydomain.com
notAfter=Dec  5 15:42:11 2020 GMT
verify return:1
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE  AUTH=CRAM-MD5 AUTH=LOGIN AUTH=PLAIN] Dovecot (Ubuntu) готов.
^C

Перезагрузите Dovecot:

sudo service dovecot reload

Этого оказалось достаточно, чтобы исправить это в моем случае. Тем не менее, стоит проверить, требуется ли перезагрузка для сервера:

ls -l /var/run/reboot-required

Я сталкивался с аналогичной проблемой при подключении к серверу SMTP с включенным letsencrypt (postfix), используя порт 587 с STARTTLS. После часа отладки я выяснил, что Thunderbird использовал восстановление сессии TLS и, следовательно, не выполнял полноценное рукопожатие TLS, в результате чего новый сертификат не был отправлен сервером. Я пока не уверен, является ли это ошибкой в TB или неправильной конфигурацией на стороне сервера – на данный момент я установил время истечения сессии на 0 секунд на стороне сервера (тем самым фактически отключив кэширование сессий на стороне сервера) и перезапустил postfix, что мгновенно решило проблему.

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

Я столкнулся с этой проблемой дважды.

Я запускаю CentOS (Stream) с postfix, dovecot, amavisd, mysql, clamd, spamassassin, selinux, opendkim, opendmarc и letsencrypt / certbot.

У меня есть 3 домена электронной почты и несколько веб-доменов, поэтому у меня есть отдельные сертификаты для каждого домена и сервера, которые certbot автоматически обновляет без проблем.

Тем не менее, поскольку я использую sni_maps (проверьте postfix), когда сертификат заменяется certbot, хотя postfix может перезапускаться / перезагружаться, файл sni_map.db необходимо пересоздать с помощью postmap -F, иначе сертификат не будет обновлен.

Благодаря ответу Роберта Холлера ответ, я смог это исправить. Если кто-то застрял на этой проблеме с Thunderbird, который не видит новые и действительные сертификаты, и имеет ту же конфигурацию с dovecot postfix и certbot, с несколькими почтовыми серверами на своем ВМ, вы, вероятно, используете sni.map, который необходимо повторно сопоставить после обновления сертификата. Поэтому решение для меня было:

postmap -F hash:/etc/postfix/sni.map

Это немного устарело, но я тоже столкнулся с этой проблемой. Это касалось postfix и postmap.

То, что произошло со мной, заключалось в том, что в vim /etc/postfix/sni_map URL не указывал на правильные сертификаты letsencrypt, потому что letsencrypt не был настроен с самого начала для моей системы.

Например, в моем /etc/postfix/sni_map (используя более новый postfix с debian 11):

domain.ca     /home/domain/ssl.key,/home/domain/ssl.cert,/home/domain/chain.pem    
.domain.ca
/home/domain/ssl.key,/home/domain/ssl.cert

даже несмотря на то, что это было настроено с тремя сертификатами, вы можете сделать это с letsencrypt

domain.ca  /etc/letsencrypt/live/domain.ca/privkey.pem,/etc/letsencrypt/live/domain.ca/fullchain.pem
.domain.ca /etc/letsencrypt/live/domain.ca/privkey.pem,/etc/letsencrypt/live/domain.ca/fullchain.pem

Затем для базы данных вы можете регенерировать с

postmap -F hash:/etc/postfix/sni_map

И перезагрузить или перезапустить postfix (я забываю, если перезагрузка работает)

systemctl restart postfix

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

Проблема с обновлением сертификата в Thunderbird: причины и решения

Если вы столкнулись с проблемой, когда Thunderbird не обновляет SSL-сертификат и продолжает сообщать о его истечении, вероятнее всего, дело связано с конфигурацией вашего почтового сервера (в данном случае это Dovecot и Postfix) и методами их работы с сертификатами. Давайте подробно разберем возможные причины проблемы и решение.

Причины проблемы

  1. Отдельные сервера для почты и веба: Как вы уже заметили, почтовый клиент Thunderbird использует различные протоколы (IMAP, POP3, SMTP) для работы с почтовым сервером. Таким образом, необходимо удостовериться, что сертификаты на вашем сервере корректно настроены для всех этих протоколов.

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

  3. Необходимость перезагрузки сервисов: После обновления сертификатов через Certbot, необходимо перезагрузить или обновить конфигурации Dovecot и Postfix, чтобы они начали использовать новые сертификаты. Некоторые изменения требуют полной перезагрузки сервисов, чтобы новые настройки вступили в силу.

  4. Удаление старых сертификатов: Вы упоминаете, что удалили старые сертификаты через настройки аккаунта. Однако, Thunderbird может продолжать ссылаться на данные сертификаты, если они хранятся в кэше.

  5. Использование SNI (Server Name Indication): Если на сервере настроено использование SNI, необходимо убедиться, что база данных sni_map обновлена после изменения сертификата.

Решения

Вот ряд действий, которые помогут вам решить данную проблему:

  1. Проверка и перезагрузка сервисов:

    • Убедитесь, что вы перезагрузили Dovecot и Postfix после обновления сертификата. Например, напишите в терминале:
      sudo service dovecot reload
      sudo systemctl restart postfix
  2. Проверка с помощью OpenSSL:

    • Вы можете проверить доступный сертификат с помощью команды OpenSSL:
      openssl s_client -connect ваш_домен:993 -quiet
    • Это позволит вам увидеть, какой сертификат на самом деле используется.
  3. Обновление базы данных sni_map:

    • Если вы используете SNI, вам может потребоваться обновить базу данных для правильного использования сертификатов. Например:
      postmap -F hash:/etc/postfix/sni.map
    • После этого обязательно перезапустите Postfix.
  4. Настраиваем кэширование TLS-сессий на сервере:

    • Если проблема связана с кэшированием TLS-сессий, вы можете рассмотреть возможность отключения серверного кэширования или уменьшения временных параметров кэширования.
  5. Чистка кэша Thunderbird:

    • Сам по себе Thunderbird может хранить кэшированные данные. Чтобы устранить проблему, попробуйте переустановить аккаунт, или, как минимум, удалить и снова добавить учетные данные в настройках Thunderbird.

Заключение

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

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

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