# 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) ## 🔒 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) ## Автоматизация 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/) ### 📄 Лицензия Скрипты предоставляются "как есть" для свободного использования. --- **Успешной автоматизации! 🔒**