LINUX.ORG.RU

Автопродление сертификата Let's Encrypt

 


2

2

Добрый день! Около трёх месяцев назад попросил одного админа настроить мне ssl-сертификат от Let's Encrypt, он всё сделал. Спросил его про автопродление, тк знаю, что сертификат выдаётся на 3 месяца, он сказал, что всё настроено.

В заданиях Cron у меня есть такая строка, как я понимаю, это и есть запуск автопродления:

0 * * * * /usr/local/bin/certbot-auto renew --post-hook "service nginx reload" > /dev/null 2>&1

В логах Cron эта строка тоже мелькает.

А вот в логах

/var/log/letsencrypt/letsencrypt.log"
тишина, последние записи датируются днём настройки сертификата (возможно так и должно быть).

Сейчас, когда я открываю сайт в Хроме, то вижу, что там указано действие сертификата до 05.01.2019. И вот вопрос, а когда это автопродление всё же сработает? Ну а дата изменится. Читал, что сертификаты от Let's Encrypt разрешено продлять, если до истечения осталось менее 30 дней. У меня осталась примерно неделя, но до сих пор он не продлился. Так и должно быть и автопродление сработает в последний день или что-то не так?

Перемещено shell-script из general

Ответ на: комментарий от futurama

Спасибо за ответ! Но что делает эта команда? Она вручную обновляет сертификат? Если так, то мне не хотелось бы это делать... Хотелось бы, чтобы всё же автоматика работала, чтобы не думать об этом каждые 3 месяца. Или эта команда только тестирует настройки и если есть ошибка, то она мне скажет об этом? Я просто опасаюсь запускать её, тк вдруг автообновление у меня настроено правильно, а после запуска этой команды оно слетит, ну или ещё какие-то неожиданности возникнут.

Rayled ()

Кстати, если у тебя wildcard сертификат, то, придется вручную обновлять ну или городить какой-то костыль с обновлением dns из скрипта и sleep`ами.

pawnhearts ★★★★ ()
Ответ на: комментарий от SevikL

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

Rayled ()

Во-первых не ссы.
Во-вторых сертификаты ты можешь обновлять так часто, как тебе хочется. Лимит — пять раз в неделю.
В-третьих Хром ненужно.
В-четвёртых автопродление. (Что я пытался этим сказать? Не знаю, видимо бухой слишком.)
В-пятых этот админ — дебил и настроил крон выполнять эту команду каждый час. И она либо не работает вообще, либо тебя давно забанили в Летсенкрипте за превышение лимита запросов.

ЗЫ: Мне лично больше нравится acme-nginx для такого.

Goury ★★★★ ()
Последнее исправление: Goury (всего исправлений: 1)

Чувак, есть нормальный сервер Caddy, в нём настройки просты, что ребёнок поймёт. В первой строке настроек Caddyfile пишешь:

https://server.com

И всё. Caddy сам запросит сертификат и обновит его за месяц до. Без кронов и прочего. Плюс, поверх всего, он по дефолту поддерживает HTTP2. Так что, nginx уже нафиг сдался в 2019 для не супер-пупер крупных проектов.

menangen ★★★★★ ()
Последнее исправление: menangen (всего исправлений: 1)
Ответ на: комментарий от Jopich1

Выполнил команду в Putty вручную

/usr/local/bin/certbot-auto renew --post-hook "service nginx reload" > /dev/null 2>&1
вообще ничего не показало, просто была задержка в секунд 15, а потом на новой строке появился курсор и всё.

Rayled ()
Ответ на: комментарий от menangen

Понятно, спасибо) Выполнил ещё раз, выдало вот что (вместо названий доменов вписал mysite):

Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - Processing /etc/letsencrypt/renewal/mysite1.ru.conf - - - - - - - - - Cert not yet due for renewal

- - - - - - - - - Processing /etc/letsencrypt/renewal/mysite2.ru.conf - - - - - - - - - Cert not yet due for renewal

- - - - - - - - -

The following certs are not due for renewal yet: /etc/letsencrypt/live/mysite1.ru/fullchain.pem expires on 2019-03-27 (skipped) /etc/letsencrypt/live/mysite2.ru/fullchain.pem expires on 2019-03-27 (skipped) No renewals were attempted. No hooks were run.

Rayled ()
Ответ на: комментарий от Jopich1

Да это он у меня только что и обновился, буквально час назад сертификат действовал до 05.01.2019.Теперь у меня сертификат действует до 27.03.2019, проверил... Получается, что всё же эта команда работает, но почему-то в автоматическом режиме через Крон продлении она не пахала, так что ли?

Rayled ()
Ответ на: комментарий от Rayled

обычно пишут так:

0 * * * * root /usr/local/bin/certbot-auto renew --post-hook "service nginx reload" > /dev/null 2>&1
Т е вполне могла не работать учитывая что ты юзера не указал. А вообще посмотри /var/log/messages на предмет ошибок крона

Jopich1 ()
Последнее исправление: Jopich1 (всего исправлений: 1)
Ответ на: комментарий от Jopich1

Да, возможно в этом и был косяк. Хотя у меня и так задание это для Крона лежит в файле root, поэтому наверное по идее не надо root писать, м? Например, вот команда, которая запускает бекап из этого же файла и он работает исправно:

0 3 */7 * * /scripts/backup_files.sh

Rayled ()
Ответ на: комментарий от Rayled
0 * * * * root /usr/local/bin/certbot-auto renew --post-hook "service nginx reload" > /var/log/certbot_log 2>&1

После чего в файле /var/log/certbot_log будут все сообщения об ошибках от certbox

r0ck3r ★★★★★ ()
Последнее исправление: r0ck3r (всего исправлений: 1)
Ответ на: комментарий от r0ck3r

Сначала отправил без root в начале, как у меня стоит:

0 * * * * /usr/local/bin/certbot-auto renew --post-hook "service nginx reload" > /var/log/certbot_log 2>&1
В итоге получил в логах: -bash: 0: command not found

Потом так, как написали вы и получил то же самое...

Rayled ()
Ответ на: комментарий от r0ck3r

Вот

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

Rayled ()
Ответ на: комментарий от r0ck3r

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

/usr/local/bin/certbot-auto renew --post-hook "service nginx reload" > /var/log/certbot_log 2>&1

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Processing /etc/letsencrypt/renewal/mysite1.ru.conf

Cert not yet due for renewal

Processing /etc/letsencrypt/renewal/mysite2.ru.conf

Cert not yet due for renewal


The following certs are not due for renewal yet:
  /etc/letsencrypt/live/mysite1.ru/fullchain.pem expires on 2019-03-27 (skipped)
  /etc/letsencrypt/live/mysite2.ru/fullchain.pem expires on 2019-03-27 (skipped)
No renewals were attempted.
No hooks were run.

[?1034h
Rayled ()
Ответ на: комментарий от SevikL

Да это понятно, но обновилось-то всё это благодаря команде вручную, а вот через Крон почему-то не хотело, хотя в логах Крона эта команда отображалась, например:

Dec 23 04:00:01 mysite CROND[2110]: (root) CMD (/usr/local/bin/certbot-auto renew --post-hook "service nginx reload" > /dev/null 2>&1)

Rayled ()
Ответ на: комментарий от Rayled

Нет, это не норма. За месяц должно обновляться. Смотри логи крона. Я затрахался в своё время с этим... Пока, кажется на sh не перешёл, в моём случае, из-за не пойми чего certbot не мог дождаться ответов от DNS, из-за чего не работало автообновление.

DALDON ★★★★★ ()
Ответ на: комментарий от deadNightTiger

а оно в днс один раз записи добавляет и потом можно обновлять не трогая днс? или каждый раз при обновлении свои грязные рученьки в днс пихает?

Rost ★★★ ()
Последнее исправление: Rost (всего исправлений: 3)