Dovecot выдал сертификат с истекшим сроком действия? [дубликат]

Я уже некоторое время использую почтовый сервер Postfix / Dovecot (сервер Ubuntu 16.04) без каких-либо серьезных проблем. У меня также есть сертификат Let's Encrypt, выданный моему имени хоста, который я установил в /etc/dovecot/conf.d/10-ssl.conf . Все прошло нормально, но, как вы знаете, они действительны только в течение 90 дней. У меня есть настройка certbot для автоматического обновления, которая также работает нормально.

Внезапно сегодня и мой Thunderbird, и клиентский Thunderbird, и его iPhone начали жаловаться на недействительные сертификаты. Я проверил сертификаты через сертификаты certbot , чтобы убедиться, что используемый мной сертификат полностью действителен, а срок его действия не истек. Проверка сертификата через Thunderbird показала мне, что срок действия сертификата истек накануне, что показало мне хэш, который не соответствует текущему сертификату.

В общем, похоже, что Dovecot выдает просроченный сертификат из какого-то «кеша». Перезапуск dovecot просто «волшебным образом» исправил это, но я хотел бы понять, что здесь произошло, поскольку мой DDG поиск в кешах сертификатов или что-то подобное в Dovecot не дал мне никаких результатов.Я упустил здесь что-то очевидное? Кажется, я упустил из виду что-то очевидное, но не могу понять, что именно.

РЕДАКТИРОВАТЬ На это в основном ответ здесь , но поскольку мой certbot обновляется по таймеру systemctl вместо cronjob, я постараюсь дать ответ на эту ситуацию здесь на будущее ссылка и все в той же лодке, что и я.

0
задан 13 March 2019 в 17:18
1 ответ

Это в основном та же проблема, на которую ответил здесь Джеральд Шнайдер. Однако, поскольку моя установка не зависит от задания cron, а от системного таймера, ответ немного отличается.

Let's Encrypt, по крайней мере, в Ubuntu, позволит вам создавать ловушки, когда автоматическое обновление запускается по таймеру (проверьте это с помощью systemctl list-timers и посмотрите, есть ли он там).

Там по сути, это два события, к которым вы можете подключиться: развертывание и публикация. Поместите свои сценарии bash в папки / etc / letsencrypt / Renewal-hooks / deploy или / etc / letsencrypt / Renewal-hooks / post соответственно. Развертывание будет запускаться при каждом обновлении сертификата индивидуально, публикация будет запускаться после завершения всех обновлений.

У сценария развертывания есть доступ к переменным $ RENEWED_DOMAINS и $ RENEWED_LINEAGE. Я поместил следующий скрипт в etc / letsencrypt / Renewal-hooks / deploy :

  1 #!/bin/bash
  2 for domain in $RENEWED_DOMAINS
  3 do
  4         if [ "$domain" = my.mailserver.com ]
  5         then
  6                 doveadm reload >/dev/null
  7         fi
  8 done

который будет перезагружать dovecot conf каждый раз, когда сертификат для 'my.mailserver.com' домен) будет повторно развернут. Надеюсь, это поможет всем, кто это искал.

1
ответ дан 4 December 2019 в 15:44

Теги

Похожие вопросы