Files
CodeSigningManager/README.md
SUGAN-PC\Evgeniy Sygonyako 241620ae28 init
2026-09-17 19:12:07 +03:00

6.6 KiB
Raw Blame History

Code Signing Manager

Python Version UI Framework Architecture 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.