Справжній HTTPS у локальній мережі: Let's Encrypt та DNS-валідація через GoDaddy API
🇬🇧 Read this article in English
Ми вже навчилися давати красиві імена нашим локальним сервісам за допомогою AdGuard Home та Nginx Proxy Manager. Проте відкриття адрес типу http://grafana.home все ще показує в адресному рядку неприємне «Не захищено».
Для безпечної передачі паролів і даних всередині домашньої мережі потрібен HTTPS із зеленим замочком.
Оскільки Let’s Encrypt не видає сертифікати на вигадані локальні зони (типу .home), ми використаємо наш реальний публічний домен — наприклад, home.myhomelab.org — та випустимо для нього безкоштовний сертифікат за допомогою DNS-валідації через API реєстратора GoDaddy.
Чому саме DNS-валідація (DNS-01)?
Зазвичай Let’s Encrypt перевіряє право власності на домен (HTTP-01 challenge), намагаючись зайти на ваш сервер з інтернету. Оскільки наші сервери знаходяться за NAT у локальній мережі, Let’s Encrypt не зможе підключитися до них ззовні.
При DNS-валідації перевірка відбувається інакше:
- Nginx Proxy Manager (NPM) робить запит до Let’s Encrypt.
- Let’s Encrypt просить створити спеціальний TXT-запис у DNS вашого домену.
- NPM через офіційне API реєстратора (в нашому випадку GoDaddy) автоматично створює цей запис.
- Let’s Encrypt перевіряє його наявність у глобальному DNS і видає Wildcard-сертифікат (
*.home.myhomelab.org). - Запис автоматично видаляється, а сертифікат безкоштовно перевипускається кожні 3 місяці.
Крок 1. Локальний редірект в AdGuard Home
Нам потрібно зробити так, щоб для домашніх пристроїв адреси типу *.home.myhomelab.org вели відразу на реверс-проксі:
- Зайдіть в AdGuard Home -> Filters -> DNS Rewrites.
- Створіть правило:
- Domain:
*.home.myhomelab.org - IP Address: IP вашого проксі-сервера (наприклад,
192.168.50.125).
- Domain:
Крок 2. Отримання API-ключів у GoDaddy
Щоб автоматизувати створення записів, отримаємо ключі доступу:
- Перейдіть на портал розробників: developer.godaddy.com/keys.
- Натисніть Create New API Key.
- Назвіть його (наприклад,
NPM-SSL) та виберіть тип середовища: Production. - Збережіть отримані Key та Secret (секрет показується один раз!).
Мал. 1. Створення ключів API у кабінеті розробника GoDaddy
Крок 3. Замовлення сертифіката в NPM
- Відкрийте Nginx Proxy Manager -> SSL Certificates -> Add SSL Certificate -> Let’s Encrypt.
- Введіть домен:
*.home.myhomelab.org(та обов’язково натисніть Enter, щоб текст перетворився на тег). - Увімкніть Use a DNS Challenge та виберіть провайдера GoDaddy.
- Вставте згенеровані API-ключі замість стандартних плейсхолдерів:
1 2
dns_godaddy_api_key = ТВІЙ_GODADDY_KEY dns_godaddy_api_secret = ТВІЙ_GODADDY_SECRET
- Натисніть Save.
Мал. 2. Налаштування DNS-валідації Let’s Encrypt в NPM
Крок 4. Прив’язка сертифіката до сервісів
Тепер відкрийте вкладку Hosts -> Proxy Hosts, відредагуйте свій хост (наприклад, змініть домен на grafana.home.myhomelab.org) і на вкладці SSL виберіть випущений сертифікат *.home.myhomelab.org. Увімкніть Force SSL та збережіть.
Мал. 3. Активація SSL-шифрування для Proxy Host
Крок 5. Швидкий редірект за коротким ім’ям
Оскільки сертифікат виданий тільки під *.home.myhomelab.org, при спробі зайти на https://grafana.home браузер сваритиметься на безпеку.
Щоб зберегти зручність короткого імені:
- В NPM перейдіть у Redirection Hosts -> Add Redirection Host.
- Введіть Domain:
grafana.home. - Вкажіть Forward Domain:
https://grafana.home.myhomelab.org.
Тепер ви вводите супер-коротку адресу grafana.home, а проксі автоматично та непомітно перенаправляє вас на повністю захищену https://grafana.home.myhomelab.org із зеленим замочком!
