Обновление SSL LetsEncrypt не работает (из-за дополнительного обратного прокси снаружи)

Сертификат для моего экземпляра Discourse истёк сегодня, и в браузере отображается ошибка. Я попытался вручную выполнить обновление согласно инструкции:

Система показала, что сертификат обновлён: я вижу его в папке /shared/letsencrypt, и обновление прошло успешно. Я перезапустил nginx внутри Docker. Даже после пересборки экземпляра кажется, что отправляется старый сертификат.

Я проверил домен через несколько сервисов, и все они сообщают, что сертификат истёк, так что проблема не только локальная.

Что-то я упускаю?

Я выполнил те же инструкции 15 дней назад.

cd /var/discourse
./launcher enter app
"/shared/letsencrypt"/acme.sh --cron --home "/shared/letsencrypt" --force
exit

Первое, что я узнал: если вы проверите сертификат в Chrome, он может показаться недействительным, хотя на самом деле он валиден. См.: Ошибка Chrome / Chromium: SSL-сертификаты отображают некорректные (истёкшие) даты

Затем я попробовал

me@site:/var/discourse$ sudo ./launcher rebuild app

что не помогло, и в итоге выполнил

sudo reboot

После этого сайт заработал как положено.


Хотя я отмечаю шаг с rebuild, не уверен, что он был необходим, но я его выполнил в процессе.

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

Думаю, что финальная команда sudo reboot могла сработать у вас, потому что она перезапустила nginx — именно это я и предложил в своём решении выше.

Несколько замечаний по этому поводу:

  • в указанной ситуации браузер на самом деле не показывает его как недействительный в адресной строке
  • в зависимости от операционной системы, при просмотре он может не выдавать предупреждения о дате действия сертификата

Вы нашли корневую причину того, почему сертификат не обновлялся автоматически?

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

image

Причина приостановки писем заключается в том, что это часть процесса восстановления базы данных; в данном конкретном случае она была восстановлена из другого экземпляра Discourse.

Письма отключены, чтобы два сайта не отправляли одни и те же сообщения.

единственный способ, которым электронная почта участвует в процессе вообще, — это то, что LE может отправить вам предупреждение, если ваш сертификат истекает и вы его не продлили

Хорошо. Спасибо. Теперь мне нужно найти корневую причину, по которой сертификат не продлился автоматически.

Есть ли какие-либо причины, по которым сертификат может не продлиться?

Обычно это происходит из-за нестандартных настроек, которые неожиданно нарушают процесс. Я бы предложил открыть новую тему, указав свои данные и описание выполненных действий.