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
...и т.д....