После получения ssl сертификатов с помощью certbot возникает вопрос его обновления. сложно настроить crontab на точную дату обновления. тем более может возникнуть ситуация что сервер в данный момент не сможет обновить сертификат и операцию надо повторить. есть много утилит по работе с сертификатами и вероятно есть несколько способов его обновления . мне попался на глаза модуль apache mod_md. с нескольких попыток удалось его настроить.
Для работы модуля надо установить последнюю версию apache и mod_md
sudo apt update
sudo apt upgrade
sudo apt install mod_md
sudo a2enmod mod_md
В настройки своего ssl сайта добавляем критически важные строки
MDomain mydomain.ru www.mydomain.ru
<VirtualHost *:443>
Protocols h2 http/1.1 acme-tls/1
ServerAdmin username@yandex.ru
полный рабочий конфиг я выложу ниже. а пока смотрим в /var/log/apache2/error.log и устраняем сообщения об ошибках пока не появится
[Date] [md:notice] [pid nnn] AH10059: The Managed Domain mydomain.com has been setup
and changes will be activated on next (graceful) server restart.
после этого надо надо отключить строки SSLCertificateFile и SSLCertificateKeyFile и перезапустить apache
sudo systemctl restart apache2
посмотреть результат работы удаленно можно с помощью броузера links по адресу http://127.0.0.1/server-status или http://127..0.0.1/md-status
окончательный вариант ssl конфига сайта выглядит так:
MDCertificateAgreement accepted
MDomain mydomain.ru www.mydomain.ru
<Location "/md-status">
SetHandler md-status
</Location>
<VirtualHost *:443>
Protocols h2 http/1.1 acme-tls/1
ServerAdmin username@yandex.ru
ServerName www.mydomain.ru
DocumentRoot /var/www/drupal8/web
<Directory /var/www/drupal8/web/>
Options +FollowSymlinks -MultiViews
AllowOverride All
</Directory>
ServerAlias mydomain.ru
Include /etc/letsencrypt/options-ssl-apache.conf
#SSLCertificateFile /etc/letsencrypt/live/mydomain.ru/fullchain.pem
#SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.ru/privkey.pem
</VirtualHost>
</IfModule>
Комментарии
Серьёзно? А зачем? LE не позволит обновить сертификат, если не осталось 3 дня до окончания его срока. Все просто дёргают certbot раз в день
Ну почти правильно.
да я тоже до этого запускал обновление раз в день. но получается что локальная почта забита сообщениями и день простоя сайта без сертификата это криминал. как в точности он его обновляет я не читал.
Если системно генерировать сертификат, то ничего не нужно делать с кронтабом... Все сразу будет автоматизированно.
* sudo letsencrypt certonly ...
P.S. С wildcard есть нюансы.
Нет никакого вопроса. Certbot прекрасно умеет обновлять сертификаты. Начинает пытаться обновить он заранее, и если что-то не складывается, обновится сертификат при следующем запуске.
Его просто надо запускать пару раз в день, никакой точной даты не нужно. Если с обновлением что-то не так, придёт письмо, и надо будет внимательно почитать логи - что не так...
Вполне вероятно, что проблема просто в старой версии certbot, например, или не правильной конфигурации веб сервера, если обновление не проходит систематично - в реальности проблемы обновления бывают _крайне_ редко, если всё настроено и обновлено.
Что при этом в логе certbot?
действительно ранее я работал со старым certbot и видел как индусы обновляют сертификат через cron.
современный certbot запускает свой сервис который автоматически обновляет. поэтому у меня возник сейчас конфликт (certbot сервис и mod_md) . пришлось этот сервис отключить. поработаю пока с модом апаче.
Его можно запускать через systemd timer или через крон. Это не важно совершенно, на самом деле.
по-моему он запускался через systemd timer . я занимался несколько недель назад. по-моему я просто удалил certbot.
Вполне возможно, зависит от дистрибутива.
Я просто к тому, что это один и тот же код, просто запускается разными методами, не более.Там ничего глобально не изменилось.