2026-09-17 19:12:07 +03:00
2026-09-17 19:12:07 +03:00
2026-09-17 19:12:07 +03:00
2026-09-17 15:14:57 +00:00
2026-09-17 19:12:07 +03:00
2026-09-17 16:43:25 +00:00

Code Signing Manager

Python PyQt6 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), что обеспечивает полное разделение бизнес-логики, интерфейса и управляющего слоя:

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. Клонируйте репозиторий:

    git clone https://github.com/your-username/CodeSigningManager.git
    cd CodeSigningManager
    
  2. Создайте и активируйте виртуальное окружение:

    python -m venv venv --without-pip
    .\venv\Scripts\Activate.ps1
    python -m ensurepip --upgrade
    
  3. Установите зависимости:

    pip install PyQt6 pyinstaller
    
  4. Запустите приложение:

    python main.py
    

📦 Сборка автономного .exe

Для упаковки приложения в один независимый исполняемый файл без консольного окна используется PyInstaller:

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.

Description
Графическое приложение (GUI) на Python/PyQt6 для автоматизации создания собственной инфраструктуры открытых ключей (Internal CA) и цифровой подписи исполняемых файлов (.exe, .dll, .msi) под Windows.
Readme GPL-3.0 59 KiB
2026-09-17 16:32:27 +00:00
Languages
Python 100%