У меня есть файл исполняемый файл, который я хочу подписать, чтобы Windows не предупреждала конечного пользователя о приложении от «неизвестного издателя». Я не разработчик Windows. Рассматриваемое приложение является заставкой, созданной из приложения, которое генерирует приложения-заставки. Таким образом, я не могу повлиять на то, как создается файл.
Я уже узнал, что мне понадобится сертификат подпись кода от CA, например Verisign или Instantssl.com. Я не понимаю, что мне нужно сделать (если это вообще возможно), чтобы подписать свой EXE-файл. Какое простое объяснение?
Ответ Мела Грина продвинул меня дальше, но signtool хочет, чтобы я указал, какой сертификат использовать в любом случае. Могу ли я каким-то образом получить бесплатный сертификат подписи кода, чтобы проверить, сработает ли он для меня вообще?
Также укажите, какой сертификат правильный. Большинство сайтов упоминают только «подпись кода» и говорят о подписании приложений, которые фактически скомпилированы пользователем. Для меня это не так.
@Rigel примерно 400 долларов в год, наверное, не стоит :)
@SharanArumugam: ЧТО ?????? Как будто Microsfot против дешевых / бесплатных программ!





Вы можете попробовать использовать Инструмент 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 в:
Вопрос о переполнении стека Установите сертификаты в хранилище сертификатов локального пользователя Windows на C#
Надеюсь, это предоставит дополнительную информацию для всех, кто пытается это сделать!
Рабочий процесс в отдельном вопросе: stackoverflow.com/questions/84847/…
«Этот инструмент автоматически устанавливается вместе с Visual Studio. Чтобы запустить инструмент, используйте командную строку разработчика (или командную строку Visual Studio в Windows 7)». msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx
Очень любопытен сертификат, используемый signtool.
Параметр «signwizard» недоступен после Windows SDK 7.0.
Makecert устарел, и вместо этого следует использовать командлет PowerShell New-SelfSignedCertificate для создания сертификата тестирования. Подробности в stackoverflow.com/a/51443366/38117911 (ответ на вопрос, связанный с The_Ghost).
@MelGreen ваша ссылка на TechNet не работает - вам нужен techcommunity.microsoft.com/t5/windows-server-essentials-and /…
@ will-croxford В статье говорится, что распространение закрытого ключа стало "еще хуже", но разве это не единственная проблема, затрагивающая только https? Допустим, у вас есть программа, в которой закрытый ключ находится в публичном репо, что является обычной практикой. Если бы программа не использовала сертификат для трафика, а использовала его только для подписи приложения, разве это не было бы хорошо? Согласно docs.microsoft.com/en-us/dotnet/standard/assembly/strong-nam ed, подпись приложения предназначена только для однозначной идентификации приложения (в GAC). Итак, вы должны использовать для этого другой ключ и все будет в порядке, что ли?
Когда я загружаю свою программу после того, как я ее загрузил, она говорит: «Ошибка, вирус обнаружен».
В журнале ASPects ASPects есть подробное описание того, как подписывать код (вы должны быть участником, чтобы прочитать статью). Скачать можно через http://www.asp-shareware.org/
Вот ссылка на описание как можно сделайте свой собственный тестовый сертификат.
Этот тоже может быть интересным.
Приложение четыре года спустя: Comodo был взломан где-то в начале 2012 года (blogs.comodo.com/it-security/data-security/…), и поэтому многие пользовательские агенты теперь отклоняют сертификаты с корневым центром Comodo.
Является ли Comodo по-прежнему рискованной ставкой в середине 2013 года, и под «пользовательскими агентами» подразумевается ли это Microsoft / Windows, поскольку они, безусловно, те, кто решает, показывать ли это пресловутое сообщение «неизвестный издатель».
Извините, удалены явные рекомендации по обслуживанию, которые 1) устарели и 2) были исключены из темы (потому что 1.).
Вы можете получить дешевый сертификат подписи кода бесплатноиз 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 евро.
Вы правы, это больше не выглядит бесплатным. fwiw Я только что продлил и ничего не платил. Может, я дедушка. Может, их внутренние процессы нарушены. Их веб-сайт действительно сложный.
Это сейчас 25 евро? (en.sklep.certum.pl/data-safety/code-signing-certificates/…)
Магазин Certum сообщает, что их сертификат с открытым исходным кодом НЕ удаляет сообщение Microsoft SmartScreen Filter.
Другой вариант, если вам нужно подписать исполняемый файл в системе Linux, - использовать код знака из Инструменты монопроекта. Это поддерживается в Ubuntu.
Это очень полезно! Пакет также доступен в Debian под именем монодевел.
И еще один вариант: если вы разрабатываете в 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.
Ссылка 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.
Вот плюсы и минусы двух вариантов
Купить сертификат
Получение сертификата из центра сертификации связано с расходами.
Цены см. В https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html и https://www.digicert.com/code-signing/.
Создайте сертификат с помощью Makecert
Подпишите исполняемый файл
Есть два способа подписать нужный файл:
Использование сертификата, установленного на компьютере
signtool.exe sign /a /s MY /sha1 sha1_thumbprint_value /t http://timestamp.verisign.com/scripts/timstamp.dll /v "C:\filename.dll"
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/…
Просто любопытно - сколько нужно заплатить, чтобы купить сертификат?