Добавлены новые документы и скрипты для автоматизации создания и управления SSL сертификатами Let's Encrypt с использованием API reg.ru и Nginx Proxy Manager. Обновлены инструкции по тестированию, настройке и использованию сертификатов, включая создание тестовых сертификатов и интеграцию с NPM. Включены примеры использования и устранения неполадок, а также улучшена структура проекта.
This commit is contained in:
56
docs/Add Let's Encrypt Certificate для провайдера reg.ru.md
Normal file
56
docs/Add Let's Encrypt Certificate для провайдера reg.ru.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# Инструкция по созданию Let's Encrypt сертификата с DNS Challenge для провайдера reg.ru в Nginx Proxy Manager
|
||||
|
||||
---
|
||||
|
||||
## Предпосылки
|
||||
- Доступ к Nginx Proxy Manager (NPM)
|
||||
- Доступ к аккаунту reg.ru с правами управления DNS-записями
|
||||
- API-ключ для управления DNS в reg.ru (если есть автоматическая интеграция)
|
||||
- Нужно получить сертификат для `*.dfv24.com` (wildcard сертификат)
|
||||
|
||||
---
|
||||
|
||||
## Шаг 1. Получение API-ключа для reg.ru
|
||||
|
||||
1. Войдите в панель управления reg.ru
|
||||
2. Перейдите в раздел управления API (если поддерживается)
|
||||
3. Создайте или найдите API-ключ с правом редактирования DNS записей
|
||||
4. Сохраните API-ключ и секрет (Client ID и API Token)
|
||||
|
||||
---
|
||||
|
||||
## Шаг 2. Настройка Nginx Proxy Manager для использования DNS Challenge reg.ru
|
||||
|
||||
1. В админке NPM перейдите в **SSL Certificates → Add SSL Certificate**
|
||||
2. Выберите **Let's Encrypt** -> **DNS Challenge**
|
||||
3. В поле **Provider** выберите `reg_ru` или `custom` (если провайдера нет, потребуется писать скрипт)
|
||||
4. В поля API впишите необходимые параметры:
|
||||
- Client ID
|
||||
- API Token
|
||||
5. В поле **Domain Names** укажите:
|
||||
`*.dfv24.com` (для wildcard сертификата)
|
||||
и основной домен `dfv24.com`
|
||||
6. Включите остальные опции (Terms of Service, Email)
|
||||
7. Нажмите **Save** для запроса сертификата
|
||||
8. NPM автоматически добавит DNS TXT-записи для подтверждения владения доменом через API reg.ru
|
||||
|
||||
---
|
||||
|
||||
## Шаг 3. Проверка и автоматическое продление
|
||||
|
||||
- После успешного создания сертификата NPM будет автоматически обновлять его через DNS Challenge.
|
||||
- Для успешного продления важно, чтобы API-ключ был действующим, а NPM имел доступ к DNS управлению.
|
||||
|
||||
---
|
||||
|
||||
## Если в NPM нет готовой интеграции с reg.ru
|
||||
|
||||
- Используйте внешний скрипт для обновления TXT записей DNS в reg.ru, настраиваемый в NPM через **Custom DNS Provider**.
|
||||
- Нужна настройка curl-запросов к API reg.ru для добавления/удаления TXT записей.
|
||||
|
||||
---
|
||||
|
||||
# Итог
|
||||
|
||||
Для wildcard сертификатов Let's Encrypt у reg.ru необходимо использовать DNS Challenge, используя API провайдера для автоматического управления DNS записями.
|
||||
В Nginx Proxy Manager настройте DNS Challenge с учётом особенностей reg.ru для бесшовного получения и продления сертификатов.
|
||||
170
docs/SSL_SCRIPTS_README.md
Normal file
170
docs/SSL_SCRIPTS_README.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# Автоматизация SSL сертификатов Let's Encrypt для reg.ru
|
||||
|
||||
Набор скриптов для автоматического создания и обновления SSL сертификатов Let's Encrypt с использованием DNS-валидации через API reg.ru.
|
||||
|
||||
## 📁 Содержимое проекта
|
||||
|
||||
- **letsencrypt_regru_dns.sh** - Bash скрипт (Linux) с certbot-dns-regru
|
||||
- **letsencrypt_regru_api.py** - Python скрипт с прямым API интеграцией
|
||||
- **letsencrypt_regru.ps1** - PowerShell скрипт (Windows)
|
||||
- **config.json.example** - Пример файла конфигурации
|
||||
- **USAGE.md** - Подробная инструкция по использованию
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
### Linux (Bash)
|
||||
|
||||
```bash
|
||||
# 1. Отредактируйте конфигурацию в скрипте
|
||||
nano letsencrypt_regru_dns.sh
|
||||
|
||||
# 2. Установите права
|
||||
chmod +x letsencrypt_regru_dns.sh
|
||||
|
||||
# 3. Запустите
|
||||
sudo ./letsencrypt_regru_dns.sh
|
||||
```
|
||||
|
||||
### Linux (Python)
|
||||
|
||||
```bash
|
||||
# 1. Создайте конфигурацию
|
||||
sudo python3 letsencrypt_regru_api.py --create-config /etc/letsencrypt/regru_config.json
|
||||
|
||||
# 2. Отредактируйте конфигурацию
|
||||
sudo nano /etc/letsencrypt/regru_config.json
|
||||
|
||||
# 3. Получите сертификат
|
||||
sudo python3 letsencrypt_regru_api.py -c /etc/letsencrypt/regru_config.json --obtain
|
||||
```
|
||||
|
||||
### Windows (PowerShell)
|
||||
|
||||
```powershell
|
||||
# 1. Создайте файл конфигурации config.json на основе config.json.example
|
||||
|
||||
# 2. Запустите скрипт
|
||||
.\letsencrypt_regru.ps1 -ConfigFile .\config.json
|
||||
```
|
||||
|
||||
## ⚙️ Конфигурация
|
||||
|
||||
Отредактируйте `config.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"regru_username": "ваш_логин",
|
||||
"regru_password": "ваш_пароль",
|
||||
"domain": "dfv24.com",
|
||||
"wildcard": true,
|
||||
"email": "admin@dfv24.com"
|
||||
}
|
||||
```
|
||||
|
||||
## 📋 Требования
|
||||
|
||||
### Linux
|
||||
- certbot
|
||||
- Python 3.6+
|
||||
- pip3
|
||||
- requests, cryptography (Python модули)
|
||||
- certbot-dns-regru (опционально)
|
||||
|
||||
### Windows
|
||||
- certbot
|
||||
- PowerShell 5.1+
|
||||
- openssl (для проверки сертификатов)
|
||||
|
||||
## 🔄 Автоматическое обновление
|
||||
|
||||
### Через cron (Linux)
|
||||
|
||||
```bash
|
||||
# Добавьте в crontab
|
||||
sudo crontab -e
|
||||
|
||||
# Проверка каждый день в 3:00
|
||||
0 3 * * * /usr/bin/python3 /path/to/letsencrypt_regru_api.py -c /etc/letsencrypt/regru_config.json
|
||||
```
|
||||
|
||||
### Через Task Scheduler (Windows)
|
||||
|
||||
1. Откройте Task Scheduler
|
||||
2. Создайте новую задачу
|
||||
3. Триггер: Ежедневно в 3:00
|
||||
4. Действие: Запуск PowerShell скрипта
|
||||
|
||||
## 📖 Функции
|
||||
|
||||
✅ Создание wildcard сертификатов (*.domain.com)
|
||||
✅ Автоматическая DNS-валидация через API reg.ru
|
||||
✅ Проверка срока действия сертификата
|
||||
✅ Автоматическое обновление перед истечением
|
||||
✅ Перезагрузка веб-сервера после обновления
|
||||
✅ Подробное логирование всех операций
|
||||
|
||||
## 🔧 Использование с Nginx Proxy Manager
|
||||
|
||||
После получения сертификата:
|
||||
|
||||
1. Войдите в NPM: http://192.168.10.14:81/
|
||||
2. SSL Certificates → Add SSL Certificate → Custom
|
||||
3. Вставьте содержимое:
|
||||
- Certificate Key: `/etc/letsencrypt/live/domain.com/privkey.pem`
|
||||
- Certificate: `/etc/letsencrypt/live/domain.com/fullchain.pem`
|
||||
|
||||
## 📝 Логи
|
||||
|
||||
- Bash: `/var/log/letsencrypt_regru.log`
|
||||
- Python: `/var/log/letsencrypt_regru.log`
|
||||
- PowerShell: `.\letsencrypt_regru.log`
|
||||
- Certbot: `/var/log/letsencrypt/letsencrypt.log`
|
||||
|
||||
## 🆘 Устранение неполадок
|
||||
|
||||
### Ошибка аутентификации API
|
||||
- Проверьте учетные данные reg.ru
|
||||
- Убедитесь, что домен под вашим управлением
|
||||
|
||||
### DNS запись не распространяется
|
||||
- Увеличьте `dns_propagation_wait` до 120 секунд
|
||||
- Проверьте DNS: `nslookup -type=TXT _acme-challenge.domain.com`
|
||||
|
||||
### Certbot не найден
|
||||
```bash
|
||||
# Ubuntu/Debian
|
||||
sudo apt-get install certbot
|
||||
|
||||
# Или через snap
|
||||
sudo snap install --classic certbot
|
||||
```
|
||||
|
||||
## 📚 Документация
|
||||
|
||||
Подробная документация в файле [USAGE.md](USAGE.md)
|
||||
|
||||
## 🔐 Безопасность
|
||||
|
||||
- Храните учетные данные в безопасности
|
||||
- Используйте `chmod 600` для конфигурационных файлов
|
||||
- Регулярно обновляйте пароли
|
||||
|
||||
## ⚠️ Важно
|
||||
|
||||
- Let's Encrypt сертификаты действительны 90 дней
|
||||
- Рекомендуется настроить автоматическое обновление
|
||||
- Для wildcard сертификатов требуется DNS-валидация
|
||||
|
||||
## 📞 Поддержка
|
||||
|
||||
- [Документация reg.ru API](https://www.reg.ru/support/api)
|
||||
- [Документация Let's Encrypt](https://letsencrypt.org/docs/)
|
||||
- [Certbot Documentation](https://certbot.eff.org/docs/)
|
||||
|
||||
## 📄 Лицензия
|
||||
|
||||
Скрипты предоставляются "как есть" для свободного использования.
|
||||
|
||||
---
|
||||
|
||||
**Успешной автоматизации! 🔒**
|
||||
79
docs/Настройке Nginx Manager с SSL .md
Normal file
79
docs/Настройке Nginx Manager с SSL .md
Normal file
@@ -0,0 +1,79 @@
|
||||
# Подробная инструкция по настройке Nginx Proxy Manager с одним глобальным SSL сертификатом для всех доменов dfv24.com
|
||||
|
||||
## Предпосылки
|
||||
- Установлен и запущен [Nginx Proxy Manager](http://192.168.10.14:81/)
|
||||
- Основной домен: dfv24.com
|
||||
- Хостинг и DNS записи домена находятся на reg.ru
|
||||
- Нужно использовать один SSL сертификат (например, wildcard) для всех поддоменов dfv24.com
|
||||
|
||||
---
|
||||
|
||||
## Шаг 1. Покупка и получение SSL Wildcard сертификата для dfv24.com
|
||||
1. На reg.ru или любом другом удостоверяющем центре (CA) закажите wildcard сертификат на домен вида `*.dfv24.com`.
|
||||
2. Получите файлы сертификата:
|
||||
- Главный сертификат (CRT)
|
||||
- Промежуточные сертификаты (CA Bundle)
|
||||
- Приватный ключ (KEY)
|
||||
|
||||
---
|
||||
|
||||
## Шаг 2. Импорт вашего SSL сертификата в Nginx Proxy Manager
|
||||
1. Авторизуйтесь в Nginx Proxy Manager на http://192.168.10.14:81/
|
||||
2. Перейдите в раздел **SSL Certificates** → кнопку **Add SSL Certificate**
|
||||
3. Выберите **Custom** (пользовательский сертификат)
|
||||
4. В поля вставьте:
|
||||
- **Certificate** — основной CRT + CA Bundle (если CA Bundle раздельно, склейте в один файл или вставляйте последовательно)
|
||||
- **Key** — содержимое приватного ключа
|
||||
- Имя сертификата задайте, например, `dfv24_wildcard`
|
||||
5. Сохраните
|
||||
|
||||
---
|
||||
|
||||
## Шаг 3. Настройка прокси-хостов с использованием глобального сертификата
|
||||
|
||||
1. Перейдите в **Proxy Hosts** → **Add Proxy Host**
|
||||
2. Заполните поля:
|
||||
- **Domain Names**: Например, `sub1.dfv24.com` (для первого поддомена)
|
||||
- **Scheme**: http или https, в зависимости от бекенда
|
||||
- **Forward Hostname / IP**: IP или DNS адрес вашего внутреннего сервиса
|
||||
- **Forward Port**: порт сервиса (например, 80 или 443)
|
||||
3. Включите **SSL** → Отметьте **Use a shared SSL certificate** (если такая опция доступна) или выберите ранее импортированный сертификат из списка
|
||||
4. Активируйте: **Block Common Exploits**, **Websockets Support**, выставьте Redirect HTTP to HTTPS, если требуется
|
||||
5. Сохраните прокси-хост
|
||||
|
||||
6. Повторите для всех поддоменов, указывая нужные домены и выбирая тот же wildcard SSL сертификат
|
||||
|
||||
---
|
||||
|
||||
## Шаг 4. Настройка DNS записей на reg.ru
|
||||
|
||||
1. Войдите в панель управления доменом на reg.ru
|
||||
2. Создайте или отредактируйте DNS записи типа A:
|
||||
- `dfv24.com` → IP вашего Nginx Proxy Manager (например, 192.168.10.14)
|
||||
- `*.dfv24.com` → тот же IP или конкретные поддомены, если есть специальные
|
||||
3. Сохраните изменения
|
||||
4. Дождитесь обновления DNS (от нескольких минут до 24 часов)
|
||||
|
||||
---
|
||||
|
||||
## Шаг 5. Тест и проверка работы
|
||||
|
||||
1. В браузере откройте любой из поддоменов `https://sub1.dfv24.com`
|
||||
2. Сертификат должен быть валидным, выданным на wildcard `*.dfv24.com`
|
||||
3. Проверьте работу прокси и корректность подстановки сертификата
|
||||
4. При необходимости проверьте логи 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, направляя domен на IP Nginx Proxy Manager.
|
||||
Это позволит юридически использовать единый сертификат для всех сервисов с различными поддоменами под вашим доменом dfv24.com.
|
||||
86
docs/Создание и продление SSL сертификата.md
Normal file
86
docs/Создание и продление SSL сертификата.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Инструкция по созданию wildcard сертификата *.dfv24.com в Nginx Proxy Manager и настройке автоматического продления SSL
|
||||
|
||||
---
|
||||
|
||||
## Шаг 1. Подготовка
|
||||
|
||||
- Убедитесь, что Nginx Proxy Manager (NPM) установлен и доступен по адресу http://192.168.10.14:81/
|
||||
- У вас есть доступ к DNS-записям домена dfv24.com в панели управления reg.ru или у другого регистратора
|
||||
|
||||
---
|
||||
|
||||
## Шаг 2. Создание Wildcard SSL сертификата в Nginx Proxy Manager
|
||||
|
||||
1. Войдите в админку Nginx Proxy Manager по адресу http://192.168.10.14:81/
|
||||
|
||||
2. Перейдите в раздел **SSL Certificates** → нажмите кнопку **Add SSL Certificate**
|
||||
|
||||
3. Выберите пункт **Let's Encrypt**
|
||||
|
||||
4. Заполните поля:
|
||||
- **Domain Names:**
|
||||
Введите `*.dfv24.com` — для wildcard сертификата
|
||||
Также рекомендуется добавить основной домен `dfv24.com` (через запятую или в новом поле)
|
||||
- **Email Address:**
|
||||
Укажите ваш Email для уведомлений от Let's Encrypt (обязательно)
|
||||
- **HTTP Challenge:**
|
||||
Оставьте проверку HTTP, если NPM доступен из интернета по порту 80 и 443, или настройте DNS Challenge если поддерживается вашим DNS
|
||||
|
||||
5. Отметьте галочку "Agree to the Let's Encrypt Terms of Service"
|
||||
|
||||
6. Нажмите **Save**
|
||||
|
||||
- NPM начнёт процесс получения сертификата с проверкой домена.
|
||||
- При успешном запросе сертификата вы увидите новый сертификат в списке.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 3. Настройка автоматического продления
|
||||
|
||||
- Nginx Proxy Manager автоматически заботится о продлении сертификатов Let's Encrypt.
|
||||
- Для этого сервер должен быть доступен из интернета по портам 80 и 443, и DNS-записи правильно указывать на ваш сервер.
|
||||
- NPM периодически (обычно за 30 дней до окончания) запрашивает обновление сертификата.
|
||||
- В случае использования DNS Challenge необходимо чтобы в NPM была настроена интеграция с DNS провайдером (если поддерживается).
|
||||
|
||||
---
|
||||
|
||||
## Шаг 4. Использование wildcard сертификата в Proxy Hosts
|
||||
|
||||
1. Перейдите в **Proxy Hosts** → Создайте или отредактируйте запись прокси
|
||||
|
||||
2. В поле **Domain Names** укажите нужный поддомен из dfv24.com, например:
|
||||
`api.dfv24.com` или `www.dfv24.com`
|
||||
|
||||
3. В разделе **SSL** выберите ваш wildcard сертификат `*.dfv24.com`, который вы получили на шаге 2
|
||||
|
||||
4. Включите опции:
|
||||
- Use SSL
|
||||
- Force SSL
|
||||
- HSTS (при необходимости)
|
||||
|
||||
5. Сохраните изменения.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 5. Проверка
|
||||
|
||||
1. Проверьте, что для всех поддоменов используется единый сертификат
|
||||
2. Посетите https://api.dfv24.com или другие поддомены из браузера
|
||||
3. Убедитесь, что сертификат валиден, не просрочен и выдан на *.dfv24.com
|
||||
4. Проверяйте в разделе SSL Certificates статус продления сертификата
|
||||
|
||||
---
|
||||
|
||||
## Дополнительно
|
||||
|
||||
- Если Let's Encrypt не может выполнить HTTP Challenge из-за закрытого порта, настройте DNS Challenge (может потребоваться ключ API DNS провайдера)
|
||||
- Для безопасности и уведомлений держите Email в актуальном состоянии
|
||||
- Проверяйте логи Nginx Proxy Manager для выявления ошибок продления
|
||||
|
||||
---
|
||||
|
||||
# Итог
|
||||
|
||||
Nginx Proxy Manager позволяет легко получать и автоматически обновлять wildcard SSL сертификаты для домена *.dfv24.com с помощью Let's Encrypt.
|
||||
Главное — правильно настроить DNS записи и обеспечить интернет доступ на HTTP/HTTPS порты.
|
||||
Далее используйте один глобальный сертификат для всех ваших поддоменов через настройки Proxy Hosts.
|
||||
Reference in New Issue
Block a user