Table of Contents
- Интеграция с Nginx Proxy Manager (NPM)
- Включение
- Как работает синхронизация
- Ручная загрузка существующего сертификата
- Один wildcard сертификат на много поддоменов
- Пошагово: использовать один wildcard сертификат для всех Proxy Hosts
- Вариант A: сертификат выдаёт этот проект (рекомендуется при reg.ru DNS-01)
- Вариант B: сертификат выдаёт сам NPM
- Вариант C: импорт уже существующего wildcard сертификата (Custom)
- DNS записи для wildcard
- Траблшутинг
- Appendix (migrated from: Настройке Nginx Manager с SSL)
- Подробная инструкция по настройке Nginx Proxy Manager с одним глобальным SSL сертификатом для всех доменов example.com
- Предпосылки
- Шаг 1. Покупка и получение SSL Wildcard сертификата для example.com
- Шаг 2. Импорт вашего SSL сертификата в Nginx Proxy Manager
- Шаг 3. Настройка прокси-хостов с использованием глобального сертификата
- Шаг 4. Настройка DNS записей на reg.ru
- Шаг 5. Тест и проверка работы
- Дополнительно
- Итог
Интеграция с Nginx Proxy Manager (NPM)
Проект умеет автоматически загружать (или обновлять) сертификаты в NPM через его API.
Включение
В конфиге:
npm_enabled: truenpm_host: напримерhttp://192.0.2.1:81npm_email,npm_password
После этого:
--obtain,--renew,--auto,--test-certбудут пытаться синхронизировать сертификат в NPM.
Как работает синхронизация
- Скрипт логинится в NPM (
/api/tokens) - Получает список сертификатов
- Ищет сертификат по домену (учитывает
<domain>и*.<domain>) - Если найден — обновляет, иначе — загружает новый
Про “дубликаты” сертификатов
Иногда NPM сразу после загрузки ещё не распарсил домены (поле domain_names пустое). Скрипт дополнительно пытается сопоставлять по nice_name, чтобы не плодить дубли.
Команда для диагностики:
--list-npm— показывает сертификаты и подсвечивает дубликаты--delete-npm <ID>— удаляет сертификат по ID
Ручная загрузка существующего сертификата
--upload-npm <DOMAIN>
Скрипт возьмёт fullchain.pem и privkey.pem из cert_dir/<DOMAIN>/ и загрузит/обновит сертификат в NPM.
Один wildcard сертификат на много поддоменов
Практический сценарий:
- Получить сертификат на
example.com+*.example.com - В NPM импортировать/использовать этот сертификат для всех Proxy Hosts
Обратите внимание:
- для wildcard Let’s Encrypt нужен DNS-01 challenge
- в NPM можно использовать либо встроенный Let’s Encrypt, либо этот проект как внешний менеджер и синхронизатор
Пошагово: использовать один wildcard сертификат для всех Proxy Hosts
Ниже — практический сценарий, когда вам нужен один сертификат (например, *.example.com) и вы хотите назначать его на все хосты.
Вариант A: сертификат выдаёт этот проект (рекомендуется при reg.ru DNS-01)
- Убедитесь, что DNS API reg.ru работает:
letsencrypt-regru --test-api -vletsencrypt-regru --test-dns -v
- Получите production сертификат:
letsencrypt-regru --obtain
-
Если
npm_enabled=true, сертификат автоматически появится в NPM. -
В NPM:
- Proxy Hosts → Add/Edit Proxy Host
- SSL → выберите сертификат (обычно “Custom/Other”)
- включите нужные опции (Force SSL, HSTS по необходимости)
Вариант B: сертификат выдаёт сам NPM
Этот вариант подходит, если NPM может сам пройти challenge.
- SSL Certificates → Add SSL Certificate → Let’s Encrypt
- Domain Names: добавьте
example.comи*.example.com - Выберите challenge:
- HTTP-01: требует доступности NPM из интернета по 80/443 и корректных A/AAAA записей
- DNS-01: требует поддерживаемого DNS provider в NPM
Если нужного DNS провайдера нет (или нет корректной интеграции для reg.ru), проще использовать этот проект как внешний DNS-01 менеджер.
Вариант C: импорт уже существующего wildcard сертификата (Custom)
Если вы приобрели wildcard сертификат у CA или получили его другим способом:
- SSL Certificates → Add SSL Certificate → Custom
- Вставьте:
- Certificate: сертификат + intermediate chain (если отдельно — добавьте подряд)
- Key: приватный ключ
- Сохраните и назначайте этот сертификат на Proxy Hosts.
DNS записи для wildcard
Для проксирования поддоменов часто достаточно, чтобы DNS указывал на NPM:
example.com→ IP NPM*.example.com→ IP NPM
Точная схема зависит от вашей инфраструктуры.
Траблшутинг
- “не логинится” → проверьте
npm_host(http/https), креды, доступность - “сертификат не появился” → проверьте
npm_enabled, логи скрипта - staging сертификаты: не предназначены для production (браузер не доверяет)
Appendix (migrated from: Настройке Nginx Manager с SSL)
Подробная инструкция по настройке Nginx Proxy Manager с одним глобальным SSL сертификатом для всех доменов example.com
Предпосылки
- Установлен и запущен Nginx Proxy Manager
- Основной домен: example.com
- Хостинг и DNS записи домена находятся на reg.ru
- Нужно использовать один SSL сертификат (например, wildcard) для всех поддоменов example.com
Шаг 1. Покупка и получение SSL Wildcard сертификата для example.com
- На reg.ru или любом другом удостоверяющем центре (CA) закажите wildcard сертификат на домен вида
*.example.com. - Получите файлы сертификата:
- Главный сертификат (CRT)
- Промежуточные сертификаты (CA Bundle)
- Приватный ключ (KEY)
Шаг 2. Импорт вашего SSL сертификата в Nginx Proxy Manager
- Авторизуйтесь в Nginx Proxy Manager на http://192.0.2.1:81/
- Перейдите в раздел SSL Certificates → кнопку Add SSL Certificate
- Выберите Custom (пользовательский сертификат)
- В поля вставьте:
- Certificate — основной CRT + CA Bundle (если CA Bundle раздельно, склейте в один файл или вставляйте последовательно)
- Key — содержимое приватного ключа
- Имя сертификата задайте, например,
dfv24_wildcard
- Сохраните
Шаг 3. Настройка прокси-хостов с использованием глобального сертификата
-
Перейдите в Proxy Hosts → Add Proxy Host
-
Заполните поля:
- Domain Names: Например,
sub1.example.com(для первого поддомена) - Scheme: http или https, в зависимости от бекенда
- Forward Hostname / IP: IP или DNS адрес вашего внутреннего сервиса
- Forward Port: порт сервиса (например, 80 или 443)
- Domain Names: Например,
-
Включите SSL → Отметьте Use a shared SSL certificate (если такая опция доступна) или выберите ранее импортированный сертификат из списка
-
Активируйте: Block Common Exploits, Websockets Support, выставьте Redirect HTTP to HTTPS, если требуется
-
Сохраните прокси-хост
-
Повторите для всех поддоменов, указывая нужные домены и выбирая тот же wildcard SSL сертификат
Шаг 4. Настройка DNS записей на reg.ru
- Войдите в панель управления доменом на reg.ru
- Создайте или отредактируйте DNS записи типа A:
example.com→ IP вашего Nginx Proxy Manager (например, 192.0.2.1)*.example.com→ тот же IP или конкретные поддомены, если есть специальные
- Сохраните изменения
- Дождитесь обновления DNS (от нескольких минут до 24 часов)
Шаг 5. Тест и проверка работы
- В браузере откройте любой из поддоменов
https://sub1.example.com - Сертификат должен быть валидным, выданным на wildcard
*.example.com - Проверьте работу прокси и корректность подстановки сертификата
- При необходимости проверьте логи Nginx Proxy Manager и исправьте ошибки
Дополнительно
- Если в Nginx Proxy Manager нет GUI опции выбора общего сертификата, можно вручную сконфигурировать конфиги через директорий
/data/nginx/proxy_hostи прописать SSL сертификат для всех хостов. - При обновлении сертификата — повторно импортировать его в Nginx Proxy Manager.
- Можно использовать LetsEncrypt для автоматического получения wildcard сертификата с помощью DNS валидации (если поддерживается вашим DNS провайдером).
Итог
Используйте один wildcard сертификат для всех поддоменов, импортируйте его как пользовательский сертификат в Nginx Proxy Manager, при создании прокси-хостов выбирайте его в настройках SSL. Управляйте DNS записями на reg.ru, направляя домен на IP Nginx Proxy Manager.
Это позволит юридически использовать единый сертификат для всех сервисов с различными поддоменами под вашим доменом example.com.