LINUX.ORG.RU
ФорумAdmin

Автопродление сертификата 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
() автор топика

руками запусти эту строку. certbot-auto - это не самая удобная штука для кронтабов, наверное на него апдейт прилетел

SevikL ★★★★★
()

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

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

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

Rayled
() автор топика

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

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

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

Не ссы, автообновление у тебя настроено неправильно.

Goury ★★★★★
()

Чувак, есть нормальный сервер 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
() автор топика
Ответ на: комментарий от Rayled

Когда ты выполнял в прошлый раз, ты обновил сертификат. :)

shell-script ★★★★★
()
Ответ на: комментарий от 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
() автор топика
Ответ на: комментарий от r0ck3r

А вот это уже сложнее, мне б для начала понять, что вы написали))) Наверное всё же админу напишу, пусть посмотрит.

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
() автор топика
Ответ на: комментарий от SevikL

Как раз над этим думаю) Думаю выставить, чтобы проверял один раз в два дня, мне кажется вполне достаточно, но пока понять не могу как.

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

Вот так наверное: 0 3 */2 * * Запуск в 03:00 каждые 2 дня, верно?

Rayled
() автор топика

оффтоп
интересно, почемму уважаемые люди из, lets encrypt не могут сертификат на год выдавать, так не удобно wild обновлять

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

Обновляй автоматизированно, что мешает? Сейчас даже certbot научился выставлять DNS-записи через плагины, а альтернативные клиенты это умели еще раньше.

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

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

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

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

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

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

deadNightTiger ★★★★★
()

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

AlexAT
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.