Лидеры года — новая категория на Workspace Digital Awards! Номинируйте вашу команду, продукты и проекты.
Сергей Меньшиков
Offline-лицензирование ПО для клиентских VPS
Сергей Меньшиков
#Разработка программного обеспечения#Администрирование серверов

Offline-лицензирование ПО для клиентских VPS

Поделиться: 0 0 0
Компания

Собственный продукт

Сфера

Информационные технологии и интернет

Регион

Россия

Сдано

Сентябрь 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-защиты от администратора машины.

Сергей Меньшиков
Сергей Меньшиков

Россия Пермь

Главный результат — автономная проверка лицензии во всех процессах продукта и безопасная поставка клиенту без закрытого ключа.


Стек технологий

  • Bash Bash Язык программирования
  • Python Python Язык программирования
  • SQL SQL Язык программирования
  • PostgreSQL PostgreSQL База данных
  • Redis Redis База данных

Оцените кейс
Спасибо за оценку
Выскажите мнение
Авторизуйтесь, чтобы добавить свой комментарий.
оставить заявку

Хотите заказать похожий проект?

Оставить заявку