Pull to refresh

Comments 20

Есть acme.sh и выдача сертификатов без перезагрузки сервиса.

Не пользовался ранее, посмотрю, спасибо.

Если "фронтендер, бэкендер, может даже мобильщик" заходит на сервер и под root запускает что-то из статей в интернетах или по советам gpt, то...

Скрытый текст

Интересно, многие ли заметили, что с мая let's encrypt завязал с OCSP. И теперь кто использовал в nginx ssl_stapling столкнутся с:

он не требует остановки сервиса и просто создаёт специальный файл в директории сайта

Он создает файл в директории .well-known (имя директории начинается с точки). У веб серверов часто запрещено отдавать директории и файлы с именами, ничинающимися с точки - это делается на случай когда в директории с сайтом есть всякие там .git, .svn, .htaccess и тому подобные служебные штуки. Так что надо заблаговременно проверить конфиг вашего Apache или Nginx на предмет таких запретов.

Кроме того для получения wildcard сертификата необходимо не только размещать файл но еще и добавлять запись в DNS.

Достаточно просто разместить txt запись без .well-known для wildcard

Метод называется dns challenge, а ещё есть dns alias mode когда для проверки используется другой домен, тогда в случае слива токена ни чего не произойдёт с основным доменом.

В случае  stateless режима acme и например haproxy, то ни чего не создаётся, не обязательно иметь даже веб сервер за обратным прокси для получения сертификатов

Ну альтернативный способ тут не рассматривал подробно. А про DNS действительно, возможно, есть смысл дополнить.

Для пет проекта сойдет, в продакшин такое выпускать - сомнительно, очень сомнительньно.

За долгие годы работы с certbot убедился, что не все так просто с ним и приходится изворачиваться местами, новичкам (не смотря на то, что этот проект ориентирован на простоту) не всегда удается сделать нормально, а при запихивании во всякие докеры легче не становится.

Для фронтендеров и бекендеров, не девопсов всегда рекомендую Nginx Proxy Manager - это реверс прокси с cert bot из коробки. Если не надо перегонять петабайты данных, то проще поставить NPN в одном месте, а потом в нем уже прописать нужные сервисы. Как минимум

  1. Меньше проблем с сертификатами

  2. Не будет даунтайма на время перевыпуска и проверки сертификатов.

С этим скриптом получается, что сервис будет останавливаться каждый раз перед проверкой сертификата, даже если время перевыпуска еще не наступило, если упадет во время работы, то сервис может и не подняться

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

Посмотрю, то, что вы предложили. Спасибо!

Из всей статьи разве что может быть полезно для кого-то информация про хуки. Всё остальное вообще не имеет никакого смысла, ибо просто ставишь certbot, даёшь команду на получение сертификата, пользуешься. Ничего вообще трогать не надо ни в Ubuntu, ни в Debian, ни в Fedora.

А вот чего реально не хватает в статье - информации о челленджах по получение сертификата. Есть про webroot, есть про standalone, но совершенно нет информации о получении сертификата через dns, которые позволяют получить в том числе и в wildcard сертификаты, не требуют остановки веб-сервера и вообще установку certbot и получение нужного сертификата можно хоть через ansible сделать.

А вот вся эта маета с настройкой таймеров и крона нужна для acme.sh и lego.

Про DNS соглашусь. С остальным не совсем. За отзыв спасибо.

У меня всё взаимодействие с certbot на новом сервере сводится к apt install/dnf install. После этого я запускаю команду certbot с определёнными параметрами. Возможно ещё перед запуском надо создать файл с секретами. После этого уже можно прописывать сертификаты в nginx. Больше ничего не надо. Дальше всё работает само. Поэтому я и написал про acme.sh и lego. Там тоже всё просто, но есть проблема с обновлением сертификатов. Это надо вручную настраивать.
С хуками столкнулся, когда у меня работал XMPP сервер. Там я настраивал копирование сертификатов новых и перезапуск сервиса.

Ага, интересный опыт. Надо посмотреть.

Меня вообще позвали в стартап, а там девопса впринципе нету. Я как бэкенд разработчик, решил разобраться, что сделать, чтоб ручками не обновлять сертификаты каждые 3 месяца. )) Вот и появилась статья эта. Много чего можно узнать интересного в процессе и из комментариев (не из всех).

Интересно, я когда-то настроил через docker. Так будет быстрее наверное.

как-то все чрезмерно сложно у вас

cat /usr/local/etc/letsencrypt/renewal/mydomain.ru.conf
# renew_before_expiry = 30 days
version = 2.3.0
archive_dir = /usr/local/etc/letsencrypt/archive/mydomain.ru
cert = /usr/local/etc/letsencrypt/live/mydomain.ru/cert.pem
privkey = /usr/local/etc/letsencrypt/live/mydomain.ru/privkey.pem
chain = /usr/local/etc/letsencrypt/live/mydomain.ru/chain.pem
fullchain = /usr/local/etc/letsencrypt/live/mydomain.ru/fullchain.pem

# Options used in the renewal process
[renewalparams]
account = acc8b9bfe080d37449336cdgh6048b5d
authenticator = webroot
webroot_path = /usr/local/www/mydomain.ru,
server = https://acme-v02.api.letsencrypt.org/directory
key_type = ecdsa
post_hook = /root/bin/certbot-posthook.sh
[[webroot_map]]
mydomain.ru = /usr/local/www/mydomain.ru
cat /root/bin/certbot-posthook.sh
#!/bin/sh
postmap -F hash:/usr/local/etc/postfix/vmail_ssl.map
service postfix reload
service dovecot reload
apachectl graceful

Не совсем понял, что сложно имеете в виду? Думаю, так может показаться, потому что в скрипте воды много, для более детального описания, плюс там еще копирование сертификата. Опять же - это только если это требуется.

А за ваш пример спасибо!

Пока админ в отпуске, откроем 80 порт или выключим все что на нем висит или bind9 настроим. Кстати я думал уже 80 порт все закрывают.

80 порт обычно доступен, но отдаёт переадресацию на https/443. Ну и для прохождения челленджа, если dns способ невозможен.

Sign up to leave a comment.

Articles