Собственный продукт
Информационные технологии и интернет
Россия
Сентябрь 2026
Задача — создать автономное лицензирование для программного продукта, устанавливаемого на клиентский VPS. Проверка должна работать без постоянного доступа к интернету, привязывать лицензию к конкретной машине и блокировать не только веб-интерфейс, но и фоновые worker, scheduler, listener и Telegram RPC. Закрытый ключ нельзя размещать на сервере клиента. Обновление лицензии и релиз должны иметь безопасный rollback.
Разработана offline-схема на основе цифровой подписи Ed25519. Закрытый ключ остаётся на компьютере владельца продукта, а на клиентский VPS попадает только публичный ключ и подписанный файл лицензии. Лицензия связывается с /etc/machine-id, содержит срок действия и параметры продукта; проверка подписи, срока и состояния системных часов выполняется локально.
Проверка встроена fail-closed во все основные точки запуска: web-приложение, task worker, scheduler, listener и Telegram RPC. Невалидная, просроченная или предназначенная для другой машины лицензия не позволяет сервисам выполнять рабочие операции. Для клиентской поставки добавлен отдельный Docker target vps-client, чтобы не включать внутренние инструменты и материалы владельца.
Подготовлены сценарии генерации ключей и лицензий, атомарной доставки, замены файла, перезапуска сервисов, health-check и отката. Контроль времени защищает от простого возврата системных часов назад, а формат лицензии версионируется для дальнейшего развития без изменения уже выданных файлов.
Собран отдельный клиентский контур offline-лицензирования и релизный профиль vps-client. Проверка лицензии закрывает все основные процессы продукта, а выдача и обновление лицензий не требуют передачи закрытого ключа на инфраструктуру клиента.
Финальный проверенный commit — fb669bf1. Release gate включал 1695 быстрых проверок, 168 PostgreSQL-проверок, реальные Redis/RQ сценарии, 155 mocked UI-проверок и 3 browser-to-real-backend сценария; зафиксировано 0 ошибок и 0 пропусков. Реальный deploy на VPS, Docker runtime из-за недоступного daemon, живые Telegram-действия и платежи в этот прогон не входили.
Ограничение модели указано явно: владелец root-доступа к клиентскому VPS теоретически может изменить контейнер или клонировать machine-id вместе с состоянием лицензии. Для защиты от такого противника нужен аппаратный TPM или онлайн-сервер лицензий. Решение предназначено для контроля штатной установки и срока использования, а не для абсолютной DRM-защиты от администратора машины.
![]()
Сергей Меньшиков
Россия Пермь
Главный результат — автономная проверка лицензии во всех процессах продукта и безопасная поставка клиенту без закрытого ключа.