Підписання файлу Windows EXE


180

У мене є файл EXE, який я хотів би підписати, щоб Windows не попередив кінцевого користувача про програму від "невідомого видавця". Я не розробник Windows. Програма, про яку йдеться, - це заставка, створена з програми, яка створює заставки програми. Я не маю впливу на те, як генерується файл.

Я вже з’ясував, що мені знадобиться довідка про підписання коду з ЦА, як Verisign або instantssl.com. Я не розумію, що мені потрібно зробити (якщо це можливо), щоб підписати свій файл EXE. Що таке просте пояснення?

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

Також уточніть, який тип сертифікату є правильним. Більшість сайтів згадують лише про "підписання коду" і говорять про програми підпису, які фактично складені користувачем. Для мене це не так.


3
Просто цікаво - скільки потрібно заплатити, щоб придбати сертифікат?
InTheNameOfScience

2
@Rigel приблизно 400 доларів на рік, напевно, не варто :)
Sharan Arumugam

@SharanArumugam: WHAAT ?????? Це як Microsfot проти дешевого / безкоштовного програмного забезпечення!
InTheNameOfScience

Відповіді:


116

Ви можете спробувати скористатися інструментом знаків Microsoft

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

signntool знак / MyFile.exe

Це підписує єдиний виконуваний файл, використовуючи "найкращий сертифікат", доступний. (Якщо у вас немає сертифіката, воно покаже повідомлення про помилку SignTool.)

Або ви можете спробувати:

signtool signwizard

Це запустить майстра, який допоможе вам підписати свою заявку. (Ця опція недоступна після Windows SDK 7.0.)


Якщо ви хочете отримати сертифікат, який ви можете використовувати для тестування процесу підписання виконуваного файлу, ви можете використовувати інструмент .NET Makecert .

Інструмент створення сертифікатів (Makecert.exe)

Після того, як ви створили власний сертифікат і використали його для підписання виконуваного файлу, вам потрібно буде вручну додати його як довірений кореневий центр для вашої машини, щоб UAC повідомив користувачеві, що запускає його з надійного джерела. Важливо . Встановлення сертифіката як ROOT CA загрожує конфіденційності користувачів. Подивіться, що сталося з DELL. Ви можете знайти додаткові відомості для досягнення цього коду і за допомогою Windows у:

Будемо сподіватися, що це ще трохи інформації для тих, хто намагається це зробити!


Працюючий робочий в окреме питання: stackoverflow.com/questions/84847 / ...
The_Ghost

4
"Цей інструмент автоматично встановлюється за допомогою Visual Studio. Щоб запустити інструмент, використовуйте командний рядок Developer (або командний рядок Visual Studio в Windows 7)." msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx
Westy92

Дуже цікаво про сертифікат, який використовує signtool.
Overdrivr

1
Опція "signwizard" недоступна після Windows SDK 7.0
Омар Рейс

Makecert застарілий, а для створення сертифікату тестування слід використовувати командлет PowerShell New-SelfSignedCertificate. Деталі в stackoverflow.com/a/51443366/38117911 (відповідь на запитання, пов’язане The_Ghost).
Олександр Рево

35

У мене був такий самий сценарій у роботі, і ось наші висновки

Перше, що вам потрібно зробити, - це отримати сертифікат і встановити його на свій комп’ютер, ви можете або придбати його у сертифікаційного органу, або створити його за допомогою makecert .

Ось плюси і мінуси 2 варіантів

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

  • Плюси
    • Використання сертифіката, виданого CA (Certificate Authority), гарантує, що Windows не попередить кінцевого користувача про додаток від "невідомого видавця" на будь-якому комп’ютері, що використовує сертифікат від CA (ОС зазвичай постачається з кореневими сертифікатами від manny CA's )
  • Мінуси:
    • Існує вартість, пов'язана з отриманням довідки з ЦА

Створіть сертифікат за допомогою Makecert

  • Плюси:
    • Етапи прості легко, і ви можете поділитися сертифікатом з кінцевими користувачами
  • Мінуси:
    • Кінцевим користувачам доведеться вручну встановити сертифікат на свої машини та залежно від ваших клієнтів, що може не бути варіантом
    • Сертифікати, згенеровані за допомогою makecert, зазвичай використовуються для розробки та тестування, а не для виробництва

Підпишіть виконуваний файл

Є два способи підписання потрібного файлу:

  • Використання сертифіката, встановленого на комп’ютері

    signntool.exe знак / a / s MY / sha1 sha1_thumbprint_value / t http://timestamp.verisign.com/scripts/timstamp.dll / v "C: \ filename.dll"

    • У цьому прикладі ми використовуємо сертифікат, що зберігається в Особистій папці з відбитком SHA1 (Цей thumbprint походить від сертифіката), щоб підписати файл, розташований у "C: \ filename.dll"
  • Використання файлу сертифіката

    signntool знак / 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: Використання сингтоолу

Перейдіть до: Пуск> Виконати тип CMD> натисніть ОК. У командному рядку введіть каталог, де існує signtool. Виконайте наступне:

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

Спосіб 2. Використання Windows

Клацніть правою кнопкою миші підписаний файл Виберіть Властивості Виберіть вкладку Цифрові підписи. Підпис відображатиметься у розділі "Підпис".

Я сподіваюся, що це могло б вам допомогти

Джерела:


Радий, що можу допомогти @PhilLab
Erick Castrillo

Будь ласка, дайте оцінку $$$. Дякую!
InTheNameOfScience

1
@WeGoToMars Я думаю , що ця стаття може допомогти вам cheapsslsecurity.com/sslproducts/codesigningcertificate.html або тут digicert.com/code-signing
Erick Кастрілльо

31

Ви можете отримати безкоштовний сертифікат підписання дешевого коду від 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

3
Це більше не виглядає безкоштовно, все ще набагато дешевше, € 14
hultqvist

1
Ти маєш рацію, це вже не виглядає безкоштовно. fwiw Я щойно поновився, і я нічого не заплатив. Можливо, я зі мною зібрався. Можливо, їх внутрішні процеси порушені Їхній веб-сайт впевнений, що це складно.
Лі Річардсон


У магазині Certum кажуть, що їх сертифікат з відкритим кодом НЕ БУДЕ видалити повідомлення Microsoft Filter SmartScreen.
Маркус Лаар

17

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

Ось посилання на опис того, як можна зробити власний сертифікат тесту .

Це також може бути цікавим.


7
Додаток через чотири роки: Comodo був порушений десь на початку 2012 року ( blogs.comodo.com/it-security/data-security/… ), і так багато агентів користувачів зараз відкидають сертифікати з кореневим повноваженням Comodo
А. Вілсон

8
Чи є Comodo все ще ризикованою ставкою в середині 2013 року, і це означає, що "користувацькі агенти" означають, що Microsoft / Windows, напевно, саме вони вирішують, чи потрібно показати те горезвісне повідомлення про "невідомого видавця".
Dan W

На жаль, вилучені явні рекомендації щодо обслуговування, які є 1) застарілими та 2) зараз виключені поза темою (тому що 1.).
деге


8

Довідка https://steward-fu.github.io/website/driver/wdm/self_sign.htm Примітка: signtool.exe від Microsoft SDK

1. Перший час (зробити приватний сертифікат)

Makecert -r -pe -ss YourName YourName.cer

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

2.Після (щоб додати свій знак у додаток)

знак підпису / s YourName YourApp.exe


4

І ще один варіант, якщо ви розробляєте ОС Windows 10, але у вас не встановлено signtool.exe Microsoft, ви можете використовувати Bash on Ubuntu в Windows для підписання програми. Ось збіг:

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


osslsigncodeтакож доступний під назвою cygwin, тому якщо ви вже використовуєте це (як і я), то ви можете увійти у своє поточне середовище, а не потребувати переходу на WSL.
thoni56

4

За допомогою наступного посилання підпишіть .exe (setup / installer) файл (підпишіть файл EXE / setup без використання Microsoft setup signtool)

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

зразок команди java -jar jsign-2.0.jar --keystore keystore.jks "--alias псевдонім --захід пароля MyInstaller.exe

Для мене працювали :)


3

Це не пряма відповідь на питання, але воно тісно пов'язане (і корисно, сподіваюся), оскільки рано чи пізно програміст вкладе руку в гаманець:

Отже, ціни на підпис EV:

1 рік $ 350 + ($ 50 прихованої плати)
2 рік $ 600
3 рік $ 750
[www.ksoftware.net] [3]
eToken надсилається як USB-накопичувач. Читач не потрібен.
Ви фактично купуєте у Comodo (Sectigo)

1 рік 350 євро
3 рік 799 євро
sklep.certum.pl

1 рік $ 499 USD
3 рік $ 897 USD
sectigo.com

1 рік $ 410 всього
2 роки 760 $ загальний
3 роки 950 $ загальний
www.globalsign.com

1 рік: $ 600 (це було $ 104)
3 рік:?
www.digicert.com

1 рік: 700 доларів США
3 роки: смішно дорого
[ https://trustcenter.websecurity.symantec.com/]

Більше цін тут:
https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html


Також дивіться посилання, додане Еріком Кастрільо: cheapsslsecurity.com/sslproducts/codesigningcertificate.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.