6.6 KiB
Code Signing Manager
Графическое приложение (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\ в корень проекта.
Установка и запуск
-
Клонируйте репозиторий: \\bash git clone https://github.com/your-username/CodeSigningManager.git cd CodeSigningManager \\
-
Создайте и активируйте виртуальное окружение: \\powershell python -m venv venv --without-pip .\venv\Scripts\Activate.ps1 python -m ensurepip --upgrade \\
-
Установите зависимости: \bash pip install PyQt6 pyinstaller \\
-
Запустите приложение: \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. Root CA»): Заполните реквизиты вашей компании, нажмите Сгенерировать Root CA, а затем экспортируйте .crt\ файл.
- Шаг 2 (Установка Root CA у клиентов): Передайте файл \Company_RootCA.crt\ клиенту или установите его в домене через Групповые Политики (GPO) в контейнер «Доверенные корневые центры сертификации».
- Шаг 3 (Вкладка «2. Сертификат подписи»): Выпустите рабочий сертификат подписи кода и экспортируйте ключ в .pfx\ с надежным паролем.
- Шаг 4 (Вкладка «3. Подпись .exe»): Выберите целевой .exe\ файл, ваш .pfx\ ключ, введите пароль и нажмите Подписать EXE.
🔒 Безопасность
- Файлы ключей (.pfx), сертификаты (.crt, .key) и папки сборок автоматически внесены в .gitignore.
- Никогда не публикуйте .pfx\ файлы и приватные ключи в открытых репозиториях!
📄 Лицензия
Распространяется под лицензией GNU GENERAL PUBLIC LICENSE. Подробности в файле LICENSE.