Certbot и Docker - SSL бесплатно всем



Есть в мире организация Letsencrypt поставившая своей целью SSL для каждого, они же взялись да и автоматизировали процесс получения и обновления сертификатов без человеческого участия, назвали этот проект Certbot.

Их чаяниями собирается образ certbot/certbot в публичном репозитории Docker. Единственное, что в их реализации не устраивает,- не всегда удобное конфигурирование.

Мой вариант образа изначально настроен для использования со сторонним веб-прокси сервером, например Nginx, через выделение общих каталогов для webroot-верификации и сертификатов. Для настройки списка доменов и почтового адреса используются переменные окружения.

На примере Nginx, потребуется:

  • указать общие каталоги разделяемые с Certbot при запуске Nginx:

    docker run -d \
    -v certbot_certs:/etc/letsencrypt:ro \
    -v certbot_webroot:/usr/share/nginx/html:ro \
    ...прочие_параметры...
    nginx:alpine
  • добавить в настройки HTTP каждого домена кусок отвечающий за протокол проверки владения доменом:

    location ^~ /.well-known/acme-challenge/ {
    auth_basic off;
    allow all;
    root /usr/share/nginx/html;
    try_files $uri =404;
    break;
    }
  • добавить в настройки HTTPS каждого домена кусок указывающий размещение SSL сертификата:
    ssl_certificate /etc/letsencrypt/live/МОЙ1.ДОМЕН/cert.pem;
    ssl_certificate /etc/letsencrypt/live/МОЙ1.ДОМЕН/privkey.pem;

После настройки сервера проксирующего веб-трафик осталось лишь запустить контейнер Certbot...

Запуск контейнера на получение и обновление сертификатов

docker run -d \
  -e DOMAINS=МОЙ1.ДОМЕН МОЙ2.ДОМЕН ...
  -e EMAIL=МОЯ@ПОЧТА
  -v certbot_certs:/etc/letsencrypt:rw \
  -v certbot_webroot:/webroot:rw \
  nizovtsevnv/certbot

Конфигурация для docker-compose / docker stack

version: "3.7"
services:
  certbot:
    environment:
      - DOMAINS=МОЙ1.ДОМЕН МОЙ2.ДОМЕН ...
      - EMAIL=МОЯ@ПОЧТА
    image: nizovtsevnv/certbot
    volumes:
      -  certbot_certs:/etc/letsencrypt:rw
      -  certbot_webroot:/webroot:rw
...и т.д....

Comments 9