| app | ||
| .env.example | ||
| .gitignore | ||
| install_client.sh | ||
| install_server.sh | ||
| README.md | ||
CertSync
CertSync — сервис для автоматической синхронизации SSL-сертификатов между сервером (машина с белым IP) и клиентами (локальными серверами) .
Сервис состоит из двух частей:
- Server на сервере создаются и обновляются SSL-сертификаты с помощью Let's Encrypt, а также предоставляется API для клиентов.
- Client периодически подключается к серверу, проверяет сертификаты и обновляет их на локали.
Синхронизация выполняется для доменов, указанных в SYNC_DOMAINS.
Server
Серверная часть запускается как systemd-сервис и автоматически стартует после загрузки системы.
Сервер:
- предоставляет API для клиентов;
- работает с сертификатами;
- выполняет авторизацию клиентов;
- работает постоянно в фоне.
После установки проверить статус:
sudo systemctl status CertSyncServer
Client
Клиентская часть запускается автоматически через cron.
Клиент:
- подключается к серверу;
- получает необходимые сертификаты;
- обновляет сертификаты на локальной машине;
- запускается автоматически каждые 4 часа.
Проверить установленную задачу:
sudo crontab -l
Пример:
0 */4 * * * /home/user/Soft/CertSync/app/.venv/bin/python /home/user/Soft/CertSync/app/Client.py
Настройка .env
Перед установкой необходимо настроить файл .env.
Пример конфигурации:
# Настройки сервера
SERVER_IP=10.0.13.1
SERVER_PORT=5013
SEVER_PATH_CERT=/etc/letsencrypt/live/
SECRET_KEY=your-secret-key
# Настройки клиента
CLIENT_IP=10.0.13.10
CLIENT_PATH_CERT=/etc/letsencrypt/live/
# Общие настройки
SYNC_DOMAINS=example.com,example.ru
# Пользователь для авторизации
USER_LOGIN=admin
USER_PASSWORD=your-password
Настройки сервера
| Параметр | Описание | Пример |
|---|---|---|
SERVER_IP |
IP-адрес сервера | 10.0.13.1 |
SERVER_PORT |
Порт сервера | 5013 |
SEVER_PATH_CERT |
Путь к сертификатам на сервере | /etc/letsencrypt/live/ |
SECRET_KEY |
Секретный ключ | your-secret-key |
Настройки клиента
| Параметр | Описание | Пример |
|---|---|---|
CLIENT_IP |
IP-адрес клиента | 10.0.13.10 |
CLIENT_PATH_CERT |
Путь к сертификатам на клиенте | /etc/letsencrypt/live/ |
Общие настройки
SYNC_DOMAINS — список доменов, сертификаты которых необходимо синхронизировать.
Несколько доменов указываются через запятую:
SYNC_DOMAINS=example.com,example.ru,test.example.com
Авторизация
USER_LOGIN и USER_PASSWORD используются для авторизации клиента на сервере.
На сервере и клиенте должны быть указаны одинаковые значения:
USER_LOGIN=admin
USER_PASSWORD=your-password
Установка Server
Запустить установочный скрипт:
sudo bash install_server.sh
Скрипт автоматически:
- создаст виртуальное окружение Python;
- установит необходимые зависимости;
- настроит
systemd; - добавит сервер в автозапуск;
- запустит сервер.
Установка Client
Запустить установочный скрипт:
sudo bash install_client.sh
Скрипт автоматически:
- создаст виртуальное окружение Python;
- установит необходимые зависимости;
- настроит
cron; - добавит запуск клиента каждые 4 часа.
Важно
Файл .env содержит секретные данные:
SECRET_KEY=
USER_LOGIN=
USER_PASSWORD=
Не передавайте .env третьим лицам и не добавляйте его в Git-репозиторий.