All checks were successful
docker-build / Build image (push) Successful in 20s
105 lines
3.9 KiB
Markdown
105 lines
3.9 KiB
Markdown
# MinIO Patcher
|
||
|
||
Инструмент для патчинга MinIO бинарного файла с целью замены встроенного публичного ключа лицензии на собственный и генерации соответствующей лицензии.
|
||
|
||
## Описание
|
||
|
||
Проект позволяет:
|
||
- Заменить встроенный публичный ключ лицензии в бинарном файле MinIO
|
||
- Сгенерировать собственную пару ключей (приватный/публичный)
|
||
- Создать лицензионный файл с использованием нового приватного ключа
|
||
- Запустить модифицированный MinIO с собственной лицензией
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
minio-patcher/
|
||
├── Dockerfile # Многоэтапная сборка для патчинга MinIO
|
||
├── docker-compose.yaml # Конфигурация для запуска сервиса
|
||
├── generate-keys.sh # Скрипт генерации ключей ECDSA P-384
|
||
├── generate-license.py # Генератор JWT лицензии
|
||
├── replace-key.py # Замена публичного ключа в бинарном файле
|
||
├── requirements.txt # Python зависимости
|
||
└── storage/ # Директория для данных MinIO
|
||
```
|
||
|
||
## Компоненты
|
||
|
||
### generate-keys.sh
|
||
Генерирует пару ECDSA ключей с кривой secp384r1:
|
||
- `new-private.pem` - приватный ключ
|
||
- `new-public.pem` - публичный ключ
|
||
|
||
### replace-key.py
|
||
Заменяет встроенный публичный ключ MinIO на новый:
|
||
- Загружает оригинальный публичный ключ с subnet.min.io
|
||
- Находит и заменяет его в бинарном файле MinIO
|
||
- Создает патченый бинарный файл
|
||
|
||
### generate-license.py
|
||
Создает JWT лицензию с параметрами:
|
||
- Организация: "acme"
|
||
- План: "STANDARD"
|
||
- Емкость: 10TB
|
||
- Срок действия: до 2033 года
|
||
- Алгоритм подписи: ES384
|
||
|
||
## Использование
|
||
|
||
### Docker Compose (рекомендуется)
|
||
|
||
```bash
|
||
docker-compose up -d
|
||
```
|
||
|
||
Сервис будет доступен на:
|
||
- API: http://localhost:9000
|
||
- Web UI: http://localhost:9001
|
||
|
||
### Ручная сборка
|
||
|
||
```bash
|
||
# Сборка образа
|
||
docker build -t minio-patcher .
|
||
|
||
# Запуск контейнера
|
||
docker run -d \
|
||
-p 9000:9000 \
|
||
-p 9001:9001 \
|
||
-v ./storage:/storage \
|
||
minio-patcher server /storage
|
||
```
|
||
|
||
### Локальное выполнение
|
||
|
||
```bash
|
||
# Установка зависимостей
|
||
pip install -r requirements.txt
|
||
|
||
# Генерация ключей
|
||
./generate-keys.sh
|
||
|
||
# Патчинг MinIO (требуется оригинальный бинарный файл)
|
||
python3 replace-key.py minio minio-patched new-public.pem
|
||
|
||
# Генерация лицензии
|
||
python3 generate-license.py new-private.pem minio.license
|
||
|
||
# Запуск с лицензией
|
||
MINIO_LICENSE=./minio.license ./minio-patched server ./storage
|
||
```
|
||
|
||
## Требования
|
||
|
||
- Docker и Docker Compose
|
||
- Python 3.13+ (для локального запуска)
|
||
- OpenSSL (для генерации ключей)
|
||
|
||
## Безопасность
|
||
|
||
⚠️ **Внимание**: Данный инструмент предназначен исключительно для образовательных и тестовых целей. Использование в продакшене может нарушать лицензионные соглашения MinIO.
|
||
|
||
## Лицензия
|
||
|
||
Проект предоставляется "как есть" без каких-либо гарантий.
|