bg-tutorials

Как подписать EXE-файл с помощью сертификата подписи кода?

Подпишите файл Exe

Если Вы разрабатываете или распространяете программное обеспечение для Windows, понимание того, как подписать EXE-файл, гарантирует, что Ваши приложения заслуживают доверия и не содержат предупреждений о безопасности. Подпись кода проверяет подлинность и целостность исполняемого файла, гарантируя пользователям, что программа получена из легитимного источника и не была подделана. Без действительной цифровой подписи Windows может заблокировать приложение или вывести предупреждения о безопасности, что затрудняет завоевание доверия пользователей.

В этой статье рассказывается о том, как подписать исполняемый файл, начиная с требований и пошаговых инструкций и заканчивая проверкой и преимуществами подписания EXE-файла.

К концу этого руководства Вы будете знать, как получить и установить сертификат подписи кода, использоватьпрограмму Microsoft signtool.exe для подписи EXE-файла и проверять, правильно ли подписан Ваш исполняемый файл. Давайте начнем.


Требования перед подписанием EXE или приложения

Прежде чем подписывать EXE-файл, Вы должны иметь необходимые инструменты и настройки. Подписание кода — это не просто применение цифровой подписи. Она требует наличия действующего сертификата, безопасного хранения ключей и соответствующего программного обеспечения для подписи. Ниже мы шаг за шагом рассмотрим все основные требования, начиная с выбора правильного сертификата и заканчивая настройкой необходимого программного обеспечения.

1. Получите сертификат подписи кода

Во-первых, Вам нужен сертификат подписи кода, выданный доверенным центром сертификации (ЦС), таким как DigiCert или Sectigo. Этот сертификат подтверждает Вашу личность как издателя программного обеспечения.

Начиная с 1 июня 2023 года, все сертификаты подписи кода должны хранить закрытый ключ на защищенном оборудовании. Таким образом, Вы не можете генерировать или хранить закрытый ключ на своем локальном компьютере. Вместо этого он должен храниться на устройстве, одобренном FIPS 140-2 Level 2+, таком как USB-токен SafeNet или аппаратный модуль безопасности (HSM).

Сертификаты подписи кода DigiCert и GoGetSSL выдаются на один год, независимо от того, используете ли Вы аппаратный токен, предоставленный ЦС, или собственное поддерживаемое аппаратное устройство. Сертификаты Sectigo/Comodo работают по другой модели, позволяя использовать многолетние планы (до трех лет) только при использовании собственного аппаратного модуля.

Тип выбранного Вами сертификата влияет на то, как Вы будете работать с хранением ключей:

  • Сертификаты EV Code Signing всегда поставляются с USB-токеном SafeNet, выпущенным ЦС. Это физическое устройство хранит Ваш закрытый ключ и требуется каждый раз, когда Вы подписываете EXE-файл.
  • Стандартные сертификаты с подписью кода не включают в себя USB-токен. Вместо этого Вы можете воспользоваться облачным сервисом подписи (например, KeyLocker от DigiCert) или хранить закрытый ключ на собственном HSM, если Ваш ЦС разрешает это.

2. Настройте Вашу среду подписания

После того, как у Вас есть сертификат и защищенное устройство хранения, Вам понадобятся соответствующие инструменты. Windows SDK (Software Development Kit) включает в себя необходимую утилиту для подписи, signtool.exe, которую Вы будете использовать для применения цифровой подписи. Если она еще не установлена, Вы можете загрузить последнюю версию с официального сайта Microsoft.

Установщик Signtool

Если Вы используете сертификат EV Code Signing, Вам также потребуется установить программное обеспечение SafeNet Authentication Client. С его помощью Ваша система сможет взаимодействовать с USB-токеном и безопасно извлекать закрытый ключ. Если Вы подписываете с помощью HSM, убедитесь, что устройство настроено соответствующим образом и что Ваш сертификат доступен из среды подписания.

Safenet

Вы также должны обладать правами администратора на своем компьютере. Подписание кода требует повышенных прав, поэтому запускайте Command Prompt или PowerShell от имени администратора перед выполнением любых команд подписания.


3. Почему временная метка важна

Ключевой частью процесса подписания является временная метка, которая гарантирует, что Ваша цифровая подпись останется действительной даже после истечения срока действия сертификата. Без временной метки Windows будет рассматривать подписанный Вами EXE как недоверенный, когда срок действия сертификата истечет.

Когда Вы подписываете свой файл, инструмент подписания связывается с сервером временной метки, который фиксирует точную дату и время подписания. Это доказывает, что Ваш файл был подписан, когда сертификат еще был действителен. Большинство ЦС предоставляют услуги временной метки бесплатно. Если Вы не добавите временную метку, пользователи будут видеть предупреждения о просроченной подписи, что сделает Ваше приложение небезопасным.


4. Заключительные приготовления перед подписанием

Прежде чем подписывать EXE, дважды проверьте, правильно ли настроены средства подписи, драйверы и устройство безопасного хранения. Если Вы используете HSM, убедитесь, что ключ доступен и правильно настроен. Если Вы используете USB-токен SafeNet, убедитесь, что он подключен и запущен SafeNet Authentication Client.

Когда все готово, Вы готовы подписать свой EXE-файл. Поначалу этот процесс может показаться сложным, но выполнение этих шагов гарантирует, что Windows будет доверять Вашему программному обеспечению, предотвратит предупреждения о безопасности и убедит пользователей в том, что Ваше приложение безопасно для установки.


Пошаговое руководство по подписанию EXE-файла

Ниже приведено подробное и актуальное руководство по подписанию EXE, который теперь должен храниться на аппаратном модуле безопасности (HSM) или USB-токене для повышения безопасности.

Шаг 1: Вставьте Ваш HSM или USB-токен

Прежде чем подписывать EXE, Вы должны подключить аппаратный токен или HSM, содержащий Ваш сертификат подписи кода и закрытый ключ. Центры сертификации теперь требуют, чтобы все сертификаты подписи кода хранились на устройствах, одобренных FIPS 140-2 Level 2, таких как USB-токен SafeNet или YubiKey HSM.

Шаги по подключению Вашего аппаратного токена:

  1. Подключите HSM или USB-токен к компьютеру с Windows.
  2. Если появится запрос, установите необходимые драйверы (большинство устройств устанавливаются автоматически).
  3. Убедитесь, что у Вас установлен SafeNet Authentication Client или любое необходимое программное обеспечение HSM.

Если Вы используете облачный HSM (например, Azure Key Vault или AWS CloudHSM), убедитесь, что Ваши учетные данные настроены правильно, прежде чем приступать к работе.


Шаг 2: Откройте Командную строку от имени администратора

Поскольку для подписания требуются системные разрешения, Вы должны использовать Command Prompt (cmd.exe) или PowerShell с правами администратора.

Шаги, чтобы открыть Командную строку от имени администратора:

  1. Вызовите меню Пуск и введите cmd.
  2. Щелкните правой кнопкой мыши на Command Prompt и выберите Run as administrator (Запуск от имени администратора).

Если Вы предпочитаете PowerShell, выполните те же действия, но вместо этого введите PowerShell.


Шаг 3: Найдите SignTool

SignTool — это утилита Microsoft, включенная в Windows SDK, которая необходима для подписания исполняемых файлов.

Найдите SignTool в Вашей системе:

Расположение SignTool зависит от установленной у Вас версии Windows SDK. Вы можете найти его в:

C:\Program Files (x86)\Windows

Kits\10\bin\10.0.22621.0\x64\signtool.exe

При необходимости замените 10.0.22621.0 на установленную у Вас версию SDK.

Signtool Path

Шаг 4: Подпишите EXE с помощью SignTool

Теперь, когда все готово, Вы можете подписать Ваш EXE-файл с помощью SignTool. Ниже приведен пример правильной команды для подписи с меткой времени. Внесите соответствующие изменения.

signtool sign /tr http://timestamp.digicert.com /td SHA256 /fd SHA256 /a "C:\path\to\yourfile.exe"

Объяснение команды:

  • /tr http://timestamp.digicert.com — Указывает URL-адрес сервера временных меток RFC 3161 (замените его на сервер Вашего ЦС).
  • /td SHA256 — Устанавливает SHA-256 в качестве алгоритма дайджеста временных меток.
  • /fd SHA256 — Указывает SHA-256 в качестве алгоритма дайджеста файла (современные версии Windows требуют этого).
  • /a — Автоматический выбор правильного сертификата подписи кода.
  • «C:\path\to\yourfile.exe» — Замените фактический путь к Вашему EXE-файлу.

Шаг 5: Введите пароль (если требуется)

Если Ваш HSM или USB-токен требует аутентификации, появится всплывающее окно с запросом Вашего пароля или PIN-кода.

Что делать дальше:

  • Введите пароль для Вашего токена SafeNet (или любого другого HSM).
  • Если у Вас несколько сертификатов, SignTool может попросить Вас выбрать правильный.

Примечание: Если Вы используете облачный HSM, Вам может потребоваться аутентификация через учетные данные API или безопасный PIN-код.


Проверьте подписанный EXE-файл

После подписания Вашего EXE убедитесь, что подпись нанесена правильно и содержит временную метку. Вот как Вы можете это проверить:

1. Проверьте свойства файла

  1. Найдите подписанный EXE-файл на Вашем компьютере.
  2. Щелкните правой кнопкой мыши по файлу и выберите Свойства.
  3. Перейдите на вкладку Цифровые подписи.
  4. Если подписание прошло успешно, Вы увидите подпись в списке вместе с меткой времени. Нажмите Подробнее, чтобы подтвердить, что в сообщении написано Эта цифровая подпись в порядке.

2. Используйте Poweshell для верификации

Для более глубокой проверки Вы можете использовать Windows Powershell.

  1. Откройте PowerShell (Win + X → PowerShell).
  2. Выполните команду:

    Get-AuthenticodeSignature "C:\Windows\System32\cmd.exe"

    Проверка подписи с помощью Powershell

Замените «cmd/exe» на Ваш exe-файл.

Это покажет подробную информацию о подписи, включая цепочку сертификатов и временную метку. Если подпись недействительна или отсутствует, Windows отметит это.

3. Протестируйте на другой системе

Для большей уверенности попробуйте загрузить и запустить подписанный EXE на другом компьютере. Если все правильно, Windows должна распознать его как доверенное приложение, не показывая предупреждений о безопасности. Выполнив эти шаги, Вы сможете убедиться, что Ваш EXE правильно подписан и готов к безопасному распространению.


Почему Вы должны подписывать EXE-файл?

Подписание приложений Windows — это не просто безопасность, это доверие, защита и обеспечение бесперебойной работы Вашего программного обеспечения. Вот несколько причин подписать исполняемый файл:

  • Пользователи доверяют подписанным программам. Если EXE-файл не подписан, Windows выдает предупреждения о безопасности, а некоторые системы могут полностью заблокировать его. Подтвержденная подпись от доверенного центра сертификации убеждает пользователей в том, что файл безопасен и не был подделан.
  • Она предотвращает несанкционированные изменения. После подписания EXE действует как запечатанная упаковка. Если кто-то попытается изменить его, внедрить вредоносное ПО или модифицировать код, подпись сломается, и Windows пометит файл как недоверенный.
  • Он уменьшает количество предупреждений Microsoft SmartScreen. SmartScreen агрессивно относится к неподписанному программному обеспечению, показывая предупреждения, которые заставляют пользователей сомневаться в необходимости установки. Подписание Вашего EXE, особенно с помощью сертификата Extended Validation (EV) Code Signing, значительно уменьшает количество таких предупреждений и делает установку более плавной.
  • Это необходимо для корпоративного распространения. Многие корпоративные среды блокируют работу неподписанного программного обеспечения в своих сетях. Подписанный EXE соответствует политикам безопасности, что гарантирует его беспрепятственное развертывание.
  • Временная метка сохраняет подпись действительной. Без временной метки подпись становится недействительной в момент истечения срока действия сертификата. С временной меткой подпись остается действительной даже после истечения срока действия сертификата, гарантируя, что Ваше программное обеспечение будет продолжать работать.

Подпишите свой EXE с уверенностью — получите сертификат подписи кода

Как только Вы узнаете, как подписать exe-файл и защитить свое программное обеспечение от предупреждений безопасности, следующим шагом будет получение соответствующего сертификата Code Signing. Независимо от того, являетесь ли Вы независимым разработчиком или бизнесом, подписание Вашего EXE-файла гарантирует доверие, беспроблемную установку и защиту от взлома. Без действительной подписи Windows будет отмечать Ваше программное обеспечение, затрудняя его установку и запуск.

В SSL Dragon мы предлагаем сертификаты OV и EV с кодовой подписью от таких ведущих провайдеров, как DigiCert, Sectigo и GoGetSSL. Нужно простое решение? Выберите индивидуальную или организационную валидацию. Хотите получить более надежную репутацию и меньше предупреждений SmartScreen? Расширенная проверка — это то, что Вам нужно. Выбирайте, подписывайте свои программы уверенно и сделайте так, чтобы предупреждения о безопасности остались в прошлом.

Сэкономьте 10% на SSL-сертификатах при заказе сегодня!

Быстрая выдача, надежное шифрование, 99,99% доверия к браузеру, специализированная поддержка и 25-дневная гарантия возврата денег. Код купона: SAVE10

Детальное изображение дракона в полете
Написано

Опытный автор контента, специализирующийся на SSL-сертификатах. Превращает сложные темы кибербезопасности в понятный, увлекательный контент. Вносите свой вклад в повышение уровня цифровой безопасности с помощью впечатляющих рассказов.