• Как установить let's encrypt сертификат в docker совместно с nginx и certbot?

    deadlymercury
    @deadlymercury
    georgich, вам в принципе на ваш вопрос ответили - вы можете положить ключи куда угодно и ничего от этого зависеть не будет. То есть условно кладете ключи в например /root/ssl, далее в докер-контейнер например добавляете том /root/ssl:/etc/nginx/ssl и потом в конфигурации пишите:

    listen 443 ssl;
    ssl_certificate     /etc/nginx/ssl/blablabla.crt;
    ssl_certificate_key /etc/nginx/ssl/blablabla.key;
    
    blablabla

    В этом вопросе вы никак не зависите от сертбота и вам на его существование наплевать. Просто абстрагируетесь от него и настраиваете https :)

    Что касается certbot - то для него не надо "делать сертификаты вручную", там более сложная процедура и фактически для того, чтобы сертификат продлевался или выписывался автоматически - вам надо добиться, чтобы домен проходил проверку автоматически. Это отдельный вопрос и он никак не связан с подключением сертификата в nginx. Опять же, надо думать про него как отдельный вопрос и экспериментировать с тем, как вы можете настроить автопроверку домена.

    Описана она здесь:
    https://certbot.eff.org/docs/using.html

    Фактически проверка возможна двумя вариантами: либо на сайте автоматически появляется проверочный файлик (сюда относятся авторизация с помощью nginx, apache, haproxy и тд), либо в dns-записях домена автоматически появляется txt-запись. Именно автоматическая проверка - ключ к возможности автоматического продления сертификата. Без нее никак - то есть нельзя один раз валидировать домен вручную, а потом автоматически продлевать выданный сертификат.

    Соответственно какой вариант авторизации выбрать - зависит от ваших требований. У нас было два основных требования: а) нам нужен wildcard (то есть проверка на уровне вебсервера уже не подходит) и б) желательно, чтобы перевыпуск сертификата мог запускаться на любой инфраструктурной машине, а не на балансировщиках с nginx (что дополнительно поставило крест на проверке с помощью вебсервера). В результате был выбран метод с проверкой через днс и поскольку у нас свои днс - плагин certbot-dns-rfc2136:
    https://certbot-dns-rfc2136.readthedocs.io/en/stable/

    Соответственно уже после того, как вы обеспечите автоматический выпуск сертификата сертботом (отдельно можно заметить, что можно сертификат не продлевать - а тупо каждый раз выписывать новый; продлить сертификат можно примерно за месяц до его окончания, тогда как выписать его можно например раз в месяц, а точнее у летсенкрипта есть лимит на 10 сертификатов для связки домен+аккаунт в неделю) - уже можно посмотреть, в какую папку складывает файлы сертбот - и монтировать ее в контейнер с nginx, чтобы он подхватывал новые сертификаты. Отдельно надо заметить, что при обновлении сертификата нужно будет скомандовать nginx -s reload.
  • Как установить let's encrypt сертификат в docker совместно с nginx и certbot?

    deadlymercury
    @deadlymercury
    WinPooh32, обрабатывать статику апачем - очень ресурсоемко.
    Хотя да, обычно nginx+apache используется не для php: для этого обычно используют nginx+php-fpm и здесь отдельно стоит заметить, что php-fpm - это практически веб-сервер (или точнее SAPI), а не "модуль nginx": то есть nginx не "обрабатывает php с помощью php-fpm" - nginx проксирует запросы в php-fpm и тот на них отвечает; технически такая связка от nginx+apache ничем не отличается, как и от nginx+uwsgi. А что использовать - apache, php-fpm или еще что-то зависит от задач и ресурсов, ну и конечно знаний.