init
This commit is contained in:
109
README.md
109
README.md
@@ -1,2 +1,109 @@
|
||||
# CodeSigningManager
|
||||
# Code Signing Manager
|
||||
|
||||
[](https://www.python.org/)
|
||||
[](https://www.riverbankcomputing.com/software/pyqt/)
|
||||
[]()
|
||||
[](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).
|
||||
|
||||
Reference in New Issue
Block a user