Сбой обновления сертификата Letsencrypt

Думаю, уже годы как я не видел, чтобы сертификат Let’s Encrypt не обновлялся, но за последнюю неделю или две у меня три сайта оказались с устаревшими сертификатами. Пересборка исправляет проблему, но до сих пор я не искал подсказки в логах.

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

Пожалуйста, ознакомьтесь:

Спасибо, Даниэла! Это действительно может быть связано, но я не понимаю, что с этим делать или как определить, должен ли сайт принудительно получать новый сертификат. Я только что проверил несколько сайтов, и на нескольких из них сертификат был обновлён за последние несколько дней. Насколько я помню, во всех случаях сертификат истёк (я перепроверил только тот, который я только что исправил), поэтому, чем больше я об этом думаю, тем меньше верю, что это объясняет проблему — если только на некоторых из этих сайтов не использовался настолько старый базовый образ, что он не мог получить новый сертификат из-за устаревшего корневого сертификата в этом образе?

АХ! Это могло бы объяснить всё. Ещё один сайт на базе Docker с Debian 9, который я администрирую, выдаёт ошибки при использовании curl, потому что его базовый образ некорректен.

Какой версии базовый образ Discourse на этих сайтах? Пожалуйста, укажите точный тег образа.

Вот список образов изображений с сайта, который я только что обновил (похоже, пора выполнить ./launcher cleanup!). Так что, наверное, это было 2.0.20210528-1735?


РЕПОЗИТОРИЙ                      ТЕГ                 ID ОБРАЗА           СОЗДАН              РАЗМЕР
local_discourse/app             latest              dab985be22b0        17 минут назад      2.84 ГБ
discourse/base                  2.0.20210528-1735   482386bf57af        4 месяца назад      2.36 ГБ
<none>                          <none>              38be7702e0fc        5 месяцев назад     2.75 ГБ
discourse/base                  2.0.20210415-1332   30e4746e631e        5 месяцев назад     2.23 ГБ
discourse/base                  2.0.20201221-2020   c0704d4ce2b4        9 месяцев назад     2.11 ГБ
discourse/base                  2.0.20201004-2310   b64c37d7ab06        12 месяцев назад    2.4 ГБ
discourse/base                  2.0.20200429-2110   dc919e1dae2c        17 месяцев назад    2.13 ГБ
local_discourse/mail-receiver   latest              711fb527de35        21 месяц назад      128 МБ
discourse/base                  2.0.20191219-2109   4a99baef7044        21 месяц назад      2.23 ГБ
discourse/mail-receiver         release             06fe375fe2c8        22 месяца назад     128 МБ
discourse/base                  2.0.20190901-2315   10f636afbeaf        2 года назад        2.29 ГБ
discourse/base                  2.0.20190625-0946   2b3a5b47565f        2 года назад        1.93 ГБ
discourse/base                  2.0.20190505-2322   ed87227f60d2        2 года назад        1.91 ГБ
discourse/base                  2.0.20190321-0122   7db99586b5b5        2 года назад        1.97 ГБ
discourse/mail-receiver         1.1.2               44042627246b        4 года назад        142 МБ

Вот информация о сертификате для последнего сертификата:

Выдан: Суббота, 26 июня 2021 г., 19:31:09
Истекает: Пятница, 24 сентября 2021 г., 19:31:08

Похоже, это касается не всех или не многих сайтов.

Да. Это уже третий раз, когда такое происходит, и каждый раз я ставил приоритетом восстановление работы сайта. В следующий раз постараюсь вести более подробные записи.

В логах видны вызовы acme.sh, но вывод перенаправляется в /dev/null.

А, значит, здесь информация теряется. Нам нужно знать, каков был источник родительского слоя старого local_discourse/app.

У меня есть тестовый сайт с последним образом, и сертификат был успешно продлен на прошлой неделе.

Да. И я только что проверил ещё с полдюжины других — у них всё тоже в порядке.
Кажется, мне стоило пометить это как #загадка.

У меня та же проблема. Просто пересобрал, но мой сертификат Let’s Encrypt для Discourse не обновляется. Как я могу проверить свою установку?

Решено: пересборка и ожидание

Ага! Это та ошибка, связанная с использованием ZeroSSL в качестве CA по умолчанию. Теперь я вспомнил, что это была проблема в недавнем прошлом.

Вот один из контейнеров, который я ещё не пересобрал:

root@community:~# docker ps
CONTAINER ID   IMAGE                           COMMAND        CREATED        STATUS      PORTS                                      NAMES
9b97fe9b5c22   local_discourse/web_only        "/sbin/boot"   9 months ago   Up 5 days   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   web_only
b3eae8a90cd7   local_discourse/mail-receiver   "/sbin/boot"   9 months ago   Up 5 days   0.0.0.0:25->25/tcp                         mail-receiver
5e90805e6d0d   local_discourse/data            "/sbin/boot"   9 months ago   Up 5 days                                              data
root@community:~# docker images
REPOSITORY                      TAG                 IMAGE ID       CREATED         SIZE
local_discourse/web_only        latest              ffd890f053e7   9 months ago    2.39GB
local_discourse/mail-receiver   latest              0d49c641ca25   9 months ago    128MB
<none>                          <none>              e53ed7c5db0f   9 months ago    2.34GB
local_discourse/data            latest              8c1539b06db4   9 months ago    2.15GB
discourse/base                  2.0.20201221-2020   c0704d4ce2b4   9 months ago    2.11GB
discourse/base                  2.0.20201208-1739   9da970f9c0bd   9 months ago    2.1GB
discourse/mail-receiver         release             06fe375fe2c8   22 months ago   128MB

А когда я запускаю команду acme внутри контейнера, получаю следующее:

root@community-web-only:/# "/shared/letsencrypt"/acme.sh --cron --home "/shared/letsencrypt" 
[Mon 04 Oct 2021 02:01:39 PM UTC] ===Starting cron===
[Mon 04 Oct 2021 02:01:39 PM UTC] Already uptodate!
[Mon 04 Oct 2021 02:01:39 PM UTC] Upgrade success!
[Mon 04 Oct 2021 02:01:39 PM UTC] Auto upgraded to: 3.0.1
[Mon 04 Oct 2021 02:01:39 PM UTC] Renew: 'community.thedaily9.in'
[Mon 04 Oct 2021 02:01:41 PM UTC] Using CA: https://acme.zerossl.com/v2/DV90
[Mon 04 Oct 2021 02:01:41 PM UTC] No EAB credentials found for ZeroSSL, let's get one
[Mon 04 Oct 2021 02:01:41 PM UTC] acme.sh is using ZeroSSL as default CA now.
[Mon 04 Oct 2021 02:01:41 PM UTC] Please update your account with an email address first.
[Mon 04 Oct 2021 02:01:41 PM UTC] acme.sh --register-account -m my@example.com
[Mon 04 Oct 2021 02:01:41 PM UTC] See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA
[Mon 04 Oct 2021 02:01:41 PM UTC] Please check log file for more details: /shared/letsencrypt/acme.sh.log
[Mon 04 Oct 2021 02:01:41 PM UTC] Error renew community.thedaily9.in.
[Mon 04 Oct 2021 02:01:41 PM UTC] Renew: 'community.thedaily9.in'
[Mon 04 Oct 2021 02:01:43 PM UTC] Using CA: https://acme.zerossl.com/v2/DV90
[Mon 04 Oct 2021 02:01:43 PM UTC] No EAB credentials found for ZeroSSL, let's get one
[Mon 04 Oct 2021 02:01:43 PM UTC] acme.sh is using ZeroSSL as default CA now.
[Mon 04 Oct 2021 02:01:43 PM UTC] Please update your account with an email address first.
[Mon 04 Oct 2021 02:01:43 PM UTC] acme.sh --register-account -m my@example.com
[Mon 04 Oct 2021 02:01:43 PM UTC] See: https://github.com/acmesh-official/acme.sh/wiki/ZeroSSL.com-CA
[Mon 04 Oct 2021 02:01:43 PM UTC] Please check log file for more details: /shared/letsencrypt/acme.sh.log
[Mon 04 Oct 2021 02:01:43 PM UTC] Error renew community.thedaily9.in_ecc.
[Mon 04 Oct 2021 02:01:43 PM UTC] ===End cron===
root@community-web-only:/# 

Думаю, что этот коммит решает проблему, и, скорее всего, сайты с такой проблемой находятся до этого коммита.