380 lines
14 KiB
Markdown
380 lines
14 KiB
Markdown
# SSL Certificate Manager (Let's Encrypt + reg.ru) — Wiki (RU)
|
||
|
||
Это Wiki проекта **configure_nginx_manager**: автоматическое получение и продление SSL сертификатов Let's Encrypt через **DNS-01** (API **reg.ru**) с опциональной синхронизацией сертификатов в **Nginx Proxy Manager (NPM)**.
|
||
|
||
## Что умеет проект
|
||
|
||
- Получение **production** сертификатов Let's Encrypt (DNS-01) для доменов reg.ru
|
||
- Поддержка **wildcard** (например, `*.example.com`)
|
||
- Автопроверка и автопродление (cron/systemd)
|
||
- Диагностика: `--test-api`, `--test-dns`
|
||
- Тестовые самоподписанные сертификаты для разработки: `--test-cert` (без лимитов LE)
|
||
- (Опционально) Автозагрузка/обновление сертификатов в NPM по API
|
||
- **Мультидоменный режим**: один конфиг → несколько доменов (`domains[]`)
|
||
|
||
## Быстрый старт
|
||
|
||
1) Установка
|
||
- См. страницу: [Installation](Installation.md)
|
||
|
||
2) Конфигурация
|
||
- См. страницу: [Configuration](Configuration.md)
|
||
|
||
3) Проверка доступа к API и DNS
|
||
- `letsencrypt-regru --test-api -v`
|
||
- `letsencrypt-regru --test-dns -v`
|
||
|
||
4) Тестирование без лимитов
|
||
- `letsencrypt-regru --test-cert`
|
||
|
||
5) Production сертификат
|
||
- `letsencrypt-regru --obtain`
|
||
|
||
6) Автопродление
|
||
- `letsencrypt-regru --auto` (обычно запускается systemd timer'ом)
|
||
|
||
## Навигация
|
||
|
||
- [Installation](Installation.md)
|
||
- [Configuration](Configuration.md)
|
||
- [Commands](Commands.md)
|
||
- [LetsEncrypt Workflow](LetsEncrypt_Workflow.md)
|
||
- [Nginx Proxy Manager](Nginx_Proxy_Manager.md)
|
||
- [Testing](Testing.md)
|
||
- [Reg.ru API Troubleshooting](RegRu_API_Troubleshooting.md)
|
||
- [Build & Release](Build_and_Release.md)
|
||
- [Deploy и Secrets](Deploy_Actions_Secrets.md)
|
||
- [Project Structure](Project_Structure.md)
|
||
- [Gitea → GitHub Sync](Gitea_Sync.md)
|
||
- [Changelog](Changelog.md)
|
||
|
||
## Примечания по лимитам Let's Encrypt
|
||
|
||
- Production: обычно **до 5 сертификатов/неделю на домен**
|
||
- Для отладки автоматизации используйте:
|
||
- `--staging` (LE staging, без лимитов)
|
||
- `--test-cert` (самоподписанный, мгновенно)
|
||
|
||
---
|
||
|
||
Источник: страницы Wiki этого репозитория и актуальное поведение CLI.
|
||
|
||
|
||
---
|
||
|
||
## Appendix (migrated from docs/DESCRIPTION.md)
|
||
<!-- MIGRATED_FROM_DOCS:DESCRIPTION.md -->
|
||
|
||
## 🔒 SSL Certificate Manager для Let's Encrypt + reg.ru
|
||
|
||
**Автоматическое управление SSL сертификатами Let's Encrypt с DNS валидацией через API reg.ru и интеграцией с Nginx Proxy Manager**
|
||
|
||
### 📖 Описание
|
||
|
||
Комплексное решение для автоматизации создания, обновления и управления SSL сертификатами Let's Encrypt для доменов, зарегистрированных на reg.ru. Поддерживает DNS-01 валидацию, wildcard сертификаты, автоматическую загрузку в Nginx Proxy Manager и генерацию тестовых сертификатов для разработки.
|
||
|
||
#### ✨ Основные возможности
|
||
|
||
- 🔐 **Автоматическое получение SSL сертификатов** через Let's Encrypt
|
||
- 🌐 **DNS-01 валидация** через API reg.ru (поддержка wildcard доменов)
|
||
- 🔄 **Автоматическое обновление** сертификатов с настраиваемым порогом
|
||
- 📦 **Интеграция с Nginx Proxy Manager** - автоматическая загрузка и обновление
|
||
- 🧪 **Тестовые сертификаты** - обход лимитов Let's Encrypt (5 в неделю)
|
||
- ⚙️ **Полная автоматизация** через systemd/cron
|
||
- 🔀 **Синхронизация репозиториев** - автоматическая синхронизация Gitea → GitHub
|
||
|
||
#### 🚀 Быстрый старт
|
||
|
||
```bash
|
||
## Установка через Makefile
|
||
sudo make install
|
||
|
||
## Настройка конфигурации
|
||
sudo nano /etc/letsencrypt/regru_config.json
|
||
|
||
## Создание тестового сертификата (без лимитов)
|
||
sudo make test-cert
|
||
|
||
## Получение production сертификата
|
||
sudo make obtain
|
||
```
|
||
|
||
#### 📋 Требования
|
||
|
||
- **ОС**: Linux (Ubuntu/Debian/CentOS)
|
||
- **Python**: 3.6+
|
||
- **Зависимости**: certbot, requests, cryptography
|
||
- **API**: reg.ru (доступ к DNS управлению)
|
||
- **Опционально**: Nginx Proxy Manager
|
||
|
||
#### 🎯 Сценарии использования
|
||
|
||
- ✅ Автоматизация SSL сертификатов для web серверов
|
||
- ✅ Централизованное управление через Nginx Proxy Manager
|
||
- ✅ Тестирование и разработка с самоподписанными сертификатами
|
||
- ✅ CI/CD интеграция
|
||
- ✅ Мультидоменные конфигурации с wildcard
|
||
|
||
#### 📚 Документация
|
||
|
||
- [README.md](README.md) - Полное руководство (1400+ строк)
|
||
- [TESTING_GUIDE.md](Testing.md) - Руководство по тестированию
|
||
- [GITEA_SYNC.md](Gitea_Sync.md) - Синхронизация Gitea → GitHub
|
||
- [CHEATSHEET.md](Commands.md) - Быстрая шпаргалка
|
||
|
||
---
|
||
|
||
### 📖 Description (English)
|
||
|
||
**Automated Let's Encrypt SSL Certificate Manager with DNS validation via reg.ru API and Nginx Proxy Manager integration**
|
||
|
||
Comprehensive solution for automating the creation, renewal, and management of Let's Encrypt SSL certificates for domains registered with reg.ru. Supports DNS-01 validation, wildcard certificates, automatic upload to Nginx Proxy Manager, and test certificate generation for development.
|
||
|
||
#### ✨ Key Features
|
||
|
||
- 🔐 **Automatic SSL certificate** issuance via Let's Encrypt
|
||
- 🌐 **DNS-01 validation** via reg.ru API (wildcard domain support)
|
||
- 🔄 **Automatic renewal** with configurable threshold
|
||
- 📦 **Nginx Proxy Manager integration** - automatic upload and update
|
||
- 🧪 **Test certificates** - bypass Let's Encrypt rate limits (5 per week)
|
||
- ⚙️ **Full automation** via systemd/cron
|
||
- 🔀 **Repository sync** - automatic Gitea → GitHub synchronization
|
||
|
||
#### 🚀 Quick Start
|
||
|
||
```bash
|
||
## Install via Makefile
|
||
sudo make install
|
||
|
||
## Configure
|
||
sudo nano /etc/letsencrypt/regru_config.json
|
||
|
||
## Create test certificate (no limits)
|
||
sudo make test-cert
|
||
|
||
## Get production certificate
|
||
sudo make obtain
|
||
```
|
||
|
||
#### 📋 Requirements
|
||
|
||
- **OS**: Linux (Ubuntu/Debian/CentOS)
|
||
- **Python**: 3.6+
|
||
- **Dependencies**: certbot, requests, cryptography
|
||
- **API**: reg.ru (DNS management access)
|
||
- **Optional**: Nginx Proxy Manager
|
||
|
||
#### 🎯 Use Cases
|
||
|
||
- ✅ SSL certificate automation for web servers
|
||
- ✅ Centralized management via Nginx Proxy Manager
|
||
- ✅ Development and testing with self-signed certificates
|
||
- ✅ CI/CD integration
|
||
- ✅ Multi-domain configurations with wildcards
|
||
|
||
#### 📚 Documentation
|
||
|
||
- [README.md](README.md) - Complete guide (1400+ lines)
|
||
- [TESTING_GUIDE.md](Testing.md) - Testing guide
|
||
- [GITEA_SYNC.md](Gitea_Sync.md) - Gitea → GitHub sync
|
||
- [CHEATSHEET.md](Commands.md) - Quick reference
|
||
|
||
---
|
||
|
||
### 👤 Автор / Author
|
||
|
||
**Фофанов Дмитрий** @ 2025
|
||
|
||
### 📄 Лицензия / License
|
||
|
||
Open Source - Free to use
|
||
|
||
### 🤝 Вклад / Contributing
|
||
|
||
Pull requests приветствуются / Pull requests are welcome!
|
||
|
||
### 🔗 Ссылки / Links
|
||
|
||
- **Документация reg.ru API**: https://www.reg.ru/support/api
|
||
- **Let's Encrypt**: https://letsencrypt.org/
|
||
- **Nginx Proxy Manager**: https://nginxproxymanager.com/
|
||
|
||
|
||
|
||
---
|
||
|
||
## Appendix (migrated from docs/SSL_SCRIPTS_README.md)
|
||
<!-- MIGRATED_FROM_DOCS:SSL_SCRIPTS_README.md -->
|
||
|
||
## Автоматизация 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": "example.com",
|
||
"wildcard": true,
|
||
"email": "admin@example.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.0.2.1: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/)
|
||
|
||
### 📄 Лицензия
|
||
|
||
Скрипты предоставляются "как есть" для свободного использования.
|
||
|
||
---
|
||
|
||
**Успешной автоматизации! 🔒**
|
||
|