This commit is contained in:
SUGAN-PC\Evgeniy Sygonyako
2026-09-17 19:12:07 +03:00
parent 3778ed501e
commit 241620ae28
8 changed files with 680 additions and 1 deletions

109
README.md
View File

@@ -1,2 +1,109 @@
# CodeSigningManager
# Code Signing Manager
[![Python Version](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
[![UI Framework](https://img.shields.io/badge/GUI-PyQt6-green.svg)](https://www.riverbankcomputing.com/software/pyqt/)
[![Architecture](https://img.shields.io/badge/Architecture-MVC-orange.svg)]()
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
Графическое приложение (GUI) на Python/PyQt6 для автоматизации создания собственной инфраструктуры открытых ключей (Internal CA) и цифровой подписи исполняемых файлов (\.exe\, \.dll\, \.msi\) под Windows.
Приложение разработано для использования коммерческими организациями (ООО/ИП) для подписи собственного ПО без зависимости от зарубежных Центров Сертификации (CA).
---
## 📌 Основные возможности
* **Генерация Root CA**: Создание автономного Корневого сертификата компании с защитой алгоритмом SHA-256 (ключ 4096-bit) и сроком действия до 30 лет.
* **Экспорт Root CA (\.crt\)**: Экспорт публичного сертификата для распространения среди системных администраторов и клиентов для добавления в «Доверенные корневые центры сертификации».
* **Выпуск Code Signing сертификатов**: Автоматическое подписание подчиненного сертификата подписи кода (2048-bit) с помощью созданного Root CA.
* **Экспорт PFX**: Безопасный экспорт сертификата подписи и закрытого ключа в защищенный паролем \.pfx\ контейнер.
* **Цифровая подпись \.exe\**: Встроенная обертка над \signtool.exe\ с поддержкой сервера точного штампа времени (Timestamping SHA-256).
* **Проверка подписи**: Быстрая валидация имеющейся цифровой подписи бинарного файла напрямую из интерфейса.
---
## 🏗 Архитектура проекта (MVC)
Проект спроектирован с соблюдением паттерна **Model-View-Controller (MVC)**, что обеспечивает полное разделение бизнес-логики, интерфейса и управляющего слоя:
\\\ ext
CodeSigningManager/
├── src/
│ ├── __init__.py
│ ├── model.py # Бизнес-логика (PowerShell API, вызовы signtool)
│ ├── view.py # Графический интерфейс на PyQt6
│ └── controller.py # Связующий слой (обработка событий UI)
├── main.py # Точка входа в приложение
├── app_icon.ico # Иконка приложения
├── version.txt # Метаданные сборки (Windows File Properties)
├── .gitignore # Исключения временных файлов и сертификатов
└── README.md
\\\
---
## 🚀 Быстрый старт
### Требования
* **ОС**: Windows 10 / 11 / Windows Server
* **Python**: Версия 3.10 или выше
* **Windows SDK** (опционально, для утилиты \signtool.exe\). Если SDK не установлен, достаточно положить \signtool.exe\ в корень проекта.
### Установка и запуск
1. **Клонируйте репозиторий:**
\\\bash
git clone https://github.com/your-username/CodeSigningManager.git
cd CodeSigningManager
\\\
2. **Создайте и активируйте виртуальное окружение:**
\\\powershell
python -m venv venv --without-pip
.\venv\Scripts\Activate.ps1
python -m ensurepip --upgrade
\\\
3. **Установите зависимости:**
\\bash
pip install PyQt6 pyinstaller
\\\
4. **Запустите приложение:**
\\bash
python main.py
\\\
---
## 📦 Сборка автономного \.exe\
Для упаковки приложения в один независимый исполняемый файл без консольного окна используется **PyInstaller**:
\\\powershell
pyinstaller --noconfirm --onefile --windowed --icon="app_icon.ico" --add-data "app_icon.ico;." --version-file="version.txt" --name "CodeSigningManager" main.py
\\\
Готовый монолитный файл будет находиться в директории \dist/CodeSigningManager.exe\.
---
## 📖 Порядок работы с программой
1. **Шаг 1 (Вкладка «1. Root CA»)**: Заполните реквизиты вашей компании, нажмите **Сгенерировать Root CA**, а затем экспортируйте \.crt\ файл.
2. **Шаг 2 (Установка Root CA у клиентов)**: Передайте файл \Company_RootCA.crt\ клиенту или установите его в домене через Групповые Политики (GPO) в контейнер *«Доверенные корневые центры сертификации»*.
3. **Шаг 3 (Вкладка «2. Сертификат подписи»)**: Выпустите рабочий сертификат подписи кода и экспортируйте ключ в \.pfx\ с надежным паролем.
4. **Шаг 4 (Вкладка «3. Подпись .exe»)**: Выберите целевой \.exe\ файл, ваш \.pfx\ ключ, введите пароль и нажмите **Подписать EXE**.
---
## 🔒 Безопасность
* Файлы ключей (\.pfx\), сертификаты (\.crt\, \.key\) и папки сборок автоматически внесены в \.gitignore\.
* **Никогда не публикуйте \.pfx\ файлы и приватные ключи в открытых репозиториях!**
---
## 📄 Лицензия
Распространяется под лицензией GNU GENERAL PUBLIC LICENSE. Подробности в файле [LICENSE](LICENSE).