Подпись EXE-файла Windows

У меня есть файл исполняемый файл, который я хочу подписать, чтобы Windows не предупреждала конечного пользователя о приложении от «неизвестного издателя». Я не разработчик Windows. Рассматриваемое приложение является заставкой, созданной из приложения, которое генерирует приложения-заставки. Таким образом, я не могу повлиять на то, как создается файл.

Я уже узнал, что мне понадобится сертификат подпись кода от CA, например Verisign или Instantssl.com. Я не понимаю, что мне нужно сделать (если это вообще возможно), чтобы подписать свой EXE-файл. Какое простое объяснение?

Ответ Мела Грина продвинул меня дальше, но signtool хочет, чтобы я указал, какой сертификат использовать в любом случае. Могу ли я каким-то образом получить бесплатный сертификат подписи кода, чтобы проверить, сработает ли он для меня вообще?

Также укажите, какой сертификат правильный. Большинство сайтов упоминают только «подпись кода» и говорят о подписании приложений, которые фактически скомпилированы пользователем. Для меня это не так.

Просто любопытно - сколько нужно заплатить, чтобы купить сертификат?

Gravity 27.01.2018 18:17

@Rigel примерно 400 долларов в год, наверное, не стоит :)

Sharan Arumugam 12.03.2019 14:58

@SharanArumugam: ЧТО ?????? Как будто Microsfot против дешевых / бесплатных программ!

Gravity 12.03.2019 16:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
211
3
224 921
10

Ответы 10

Вы можете попробовать использовать Инструмент Microsoft Sign

Вы загружаете его как часть Windows SDK для Windows Server 2008 и .NET 3.5. После загрузки вы можете использовать его из командной строки следующим образом:

signtool sign /a MyFile.exe

Это подписывает единственный исполняемый файл, используя «лучший из имеющихся сертификатов». (Если у вас нет сертификата, появится сообщение об ошибке SignTool.)

Или вы можете попробовать:

signtool signwizard

Это запустит мастер, который проведет вас через подписание вашего приложения. (Этот параметр недоступен после Windows SDK 7.0.)


Если вы хотите получить сертификат, который можно использовать для тестирования процесса подписания исполняемого файла, вы можете использовать инструмент .NET Makecert.

Инструмент создания сертификата (Makecert.exe)

После того как вы создали свой собственный сертификат и использовали его для подписи исполняемого файла, вам необходимо вручную добавить его в качестве доверенного корневого центра сертификации для вашего компьютера, чтобы ОАК сообщал пользователю, запускающему его, что он из надежного источника. Важный. Установка сертификата как ROOT CA поставит под угрозу конфиденциальность ваших пользователей. Посмотрите, что случилось с DELL. Вы можете найти дополнительную информацию для выполнения этого как в коде, так и через Windows в:

Надеюсь, это предоставит дополнительную информацию для всех, кто пытается это сделать!

Рабочий процесс в отдельном вопросе: stackoverflow.com/questions/84847/…

The_Ghost 08.05.2014 13:54

«Этот инструмент автоматически устанавливается вместе с Visual Studio. Чтобы запустить инструмент, используйте командную строку разработчика (или командную строку Visual Studio в Windows 7)». msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx

Westy92 10.07.2014 18:11

Очень любопытен сертификат, используемый signtool.

Overdrivr 20.09.2018 10:17

Параметр «signwizard» недоступен после Windows SDK 7.0.

Omar Reis 12.02.2019 21:45

Makecert устарел, и вместо этого следует использовать командлет PowerShell New-SelfSignedCertificate для создания сертификата тестирования. Подробности в stackoverflow.com/a/51443366/38117911 (ответ на вопрос, связанный с The_Ghost).

Alexander Revo 16.01.2020 18:53

@MelGreen ваша ссылка на TechNet не работает - вам нужен techcommunity.microsoft.com/t5/windows-server-essentials-and‌ /…

Legorooj 01.02.2020 02:40

@ will-croxford В статье говорится, что распространение закрытого ключа стало "еще хуже", но разве это не единственная проблема, затрагивающая только https? Допустим, у вас есть программа, в которой закрытый ключ находится в публичном репо, что является обычной практикой. Если бы программа не использовала сертификат для трафика, а использовала его только для подписи приложения, разве это не было бы хорошо? Согласно docs.microsoft.com/en-us/dotnet/standard/assembly/strong-nam‌ ed, подпись приложения предназначена только для однозначной идентификации приложения (в GAC). Итак, вы должны использовать для этого другой ключ и все будет в порядке, что ли?

Poikilos 22.02.2020 22:53

Когда я загружаю свою программу после того, как я ее загрузил, она говорит: «Ошибка, вирус обнаружен».

Anston Sorensen 13.12.2020 07:41

В журнале ASPects ASPects есть подробное описание того, как подписывать код (вы должны быть участником, чтобы прочитать статью). Скачать можно через http://www.asp-shareware.org/

Вот ссылка на описание как можно сделайте свой собственный тестовый сертификат.

Этот тоже может быть интересным.

Приложение четыре года спустя: Comodo был взломан где-то в начале 2012 года (blogs.comodo.com/it-security/data-security/…), и поэтому многие пользовательские агенты теперь отклоняют сертификаты с корневым центром Comodo.

A. Wilson 11.10.2012 00:50

Является ли Comodo по-прежнему рискованной ставкой в ​​середине 2013 года, и под «пользовательскими агентами» подразумевается ли это Microsoft / Windows, поскольку они, безусловно, те, кто решает, показывать ли это пресловутое сообщение «неизвестный издатель».

Dan W 27.06.2013 16:15

Извините, удалены явные рекомендации по обслуживанию, которые 1) устарели и 2) были исключены из темы (потому что 1.).

deceze 26.01.2017 17:43

Вы можете получить дешевый сертификат подписи кода бесплатноиз Certum, если вы занимаетесь разработкой с открытым исходным кодом.

Я использую их сертификат более года, и он действительно избавляет от сообщения неизвестного издателя из Windows.

Что касается кода подписи, я использую signtool.exe из такого скрипта:

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe

Это уже не выглядит бесплатным, все еще намного дешевле, 14 евро.

hultqvist 25.07.2015 01:14

Вы правы, это больше не выглядит бесплатным. fwiw Я только что продлил и ничего не платил. Может, я дедушка. Может, их внутренние процессы нарушены. Их веб-сайт действительно сложный.

Lee Richardson 20.08.2015 05:29

Это сейчас 25 евро? (en.sklep.certum.pl/data-safety/code-signing-certificates/…)

ewerybody 09.05.2019 15:28

Магазин Certum сообщает, что их сертификат с открытым исходным кодом НЕ удаляет сообщение Microsoft SmartScreen Filter.

Markus Laire 25.06.2020 21:04

Другой вариант, если вам нужно подписать исполняемый файл в системе Linux, - использовать код знака из Инструменты монопроекта. Это поддерживается в Ubuntu.

Это очень полезно! Пакет также доступен в Debian под именем монодевел.

Marian 22.06.2017 10:18

И еще один вариант: если вы разрабатываете в Windows 10, но у вас не установлен signtool.exe от Microsoft, вы можете использовать Bash в Ubuntu в Windows для подписи своего приложения. Вот сбег:

https://blog.synapp.nz/2017/06/16/code-signing-a-windows-application-on-linux-on-windows/

osslsigncode также доступен под cygwin, поэтому, если вы уже используете его (как и я), вы можете войти в свою текущую среду, вместо того, чтобы переключаться на WSL.
thoni56 28.12.2018 18:52

Ссылка https://steward-fu.github.io/website/driver/wdm/self_sign.htm Примечание: signtool.exe из Microsoft SDK

1. в первый раз (чтобы сделать частный сертификат)

Makecert -r -pe -ss ваше имя YourName.cer

certmgr.exe -add YourName.cer -s -r localMachine root

2. После (чтобы добавить свой знак в приложение)

signtool sign / s YourName YourApp.exe

Используйте следующую ссылку для подписи файла .exe (setup / installer) (подпишите exe / установочный файл без использования Microsoft setup signtool)

https://ebourg.github.io/jsign/#files

пример команды java -jar jsign-2.0.jar --keystore keystore.jks "--alias alias --storepass password MyInstaller.exe

Сработало у меня :)

У меня был такой же сценарий на работе, и вот наши выводы

Первое, что вам нужно сделать, это получить сертификат и установить его на свой компьютер. Вы можете либо купить его у Центр сертификации, либо сгенерировать его с помощью Makecert.

Вот плюсы и минусы двух вариантов

Купить сертификат

  • Плюсы
    • Использование сертификата, выданного ЦС (центром сертификации), убедитесь, что Windows не будет предупреждать конечного пользователя о приложении от "неизвестного издателя" на любом Компьютере, использующем сертификат из центра сертификации (ОС обычно поставляется с корневыми сертификатами от manny CA)
  • Минусы:

Создайте сертификат с помощью Makecert

  • Плюсы:
    • Шаги просты, и вы можете поделиться сертификатом с конечными пользователями.
  • Минусы:
    • Конечным пользователям придется вручную установить сертификат на свои машины, и в зависимости от ваших клиентов это может быть не вариант.
    • Сертификаты, созданные с помощью makecert, обычно используются для разработки и тестирования, а не для производства.

Подпишите исполняемый файл

Есть два способа подписать нужный файл:

  • Использование сертификата, установленного на компьютере

    signtool.exe sign /a /s MY /sha1 sha1_thumbprint_value /t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\filename.dll"

    • В этом примере мы используем сертификат, хранящийся в папке Personal, с отпечатком SHA1 (этот отпечаток берется из сертификата), чтобы подписать файл, расположенный в C:\filename.dll.
  • Использование файла сертификата

    signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /f "c:\path\to\mycert.pfx" /p pfxpassword "c:\path\to\file.exe"

    • В этом примере мы используем сертификат c:\path\to\mycert.pfx с паролем pfxpassword для подписи файла c:\path\to\file.exe.

Проверьте свою подпись

  • Метод 1: использование signtool

    Перейти к: Пуск> Выполнить
    Введите CMD> щелкните В ПОРЯДКЕ
    В командной строке введите каталог, в котором существует signtool. Выполните следующее:

    signtool.exe verify /pa /v "C:\filename.dll"

  • Метод 2: Использование Windows

    Щелкните правой кнопкой мыши подписанный файл
    Выберите Характеристики
    Выберите вкладку Цифровые подписи. Подпись будет отображаться в разделе Список подписей.

Я надеюсь, это может тебе помочь

Источники:

Это не прямой ответ на вопрос, но он тесно связан (и, надеюсь, полезен), так как рано или поздно программист засунет руку в кошелек:

Итак, цены на сигнатуру EV (OV особо не помогает):

1 год 379 евро
en.sklep.certum.pl
(кажется, только для пользователей Польши)

1 год $ 350 + (50 $ скрытая плата)
2 года $ 600
3 года $ 750
(OV: 84 доллара в год)
www.ksoftware.net
eToken отправляется как USB-накопитель. Читатель не нужен. Фактически вы покупаете у Comodo (Sectigo). Они очень медленные.

1 год 364 евро + 19% НДС 444 руб. (OV 69 + НДС)
www.leaderssl.de

1 год $ 499 долларов США
3 года $ 897 долларов США
sectigo.com

1 год Всего $ 410
2 года, всего 760 $
3 года Всего 950 $
www.globalsign.com

1 год: 600 долларов (было 104 доллара)
3 года:?
www.digicert.com

1 год: $ 700
3 года: смешно дорого [symantec.com]

Подробнее цены здесь:
cheapsslsecurity.com CodeSigning EV
cheapsslsecurity.com Только SSL!


См. Также: stackoverflow.com/questions/64134677/…

Gravity 30.09.2020 12:47

Подписание кода EV за 299 долларов на 3 года:

https://sectigo.com/ssl-certificates-tls/code-signing

Другие вопросы по теме