Windows EXE dosyasını imzalama


180

Windows'un son kullanıcıyı "bilinmeyen bir yayıncı" dan gelen bir uygulama hakkında uyarmaması için imzalamak istediğim bir EXE dosyası var. Ben bir Windows geliştiricisi değilim. Söz konusu uygulama, ekran koruyucu uygulamaları üreten bir uygulamadan oluşturulan bir ekran koruyucudur. Bu nedenle dosyanın nasıl oluşturulduğu üzerinde hiçbir etkisi yoktur.

Verisign veya instantssl.com gibi bir CA'dan kod imzalama sertifikasına ihtiyacım olacağını zaten öğrendim . Anlamadığım şey, EXE dosyamı imzalamak için (mümkünse) yapmam gereken şey. Basit açıklama nedir?

Mel Green'in yanıtı beni daha da ileri götürdü, ancak signtool her durumda hangi sertifikanın kullanılacağını belirtmemi istiyor. Bunun benim için işe yarayıp yaramayacağını test etmek için bir şekilde ücretsiz kod imzalama sertifikası alabilir miyim?

Lütfen hangi sertifika türünün doğru olduğunu belirtin. Çoğu site yalnızca "kod imzalama" dan bahseder ve kullanıcı tarafından derlenen imzalama uygulamaları hakkında konuşur. Benim için durum böyle değil.


3
Sadece merak ediyorum - bir sertifika almak için ne kadar ödemek zorunda?
InTheNameOfScience

2
@Rigel yılda 400 $, muhtemelen değmez :)
Sharan Arumugam

@SharanArumugam: WHAAT ?????? Microsfot ucuz / özgür yazılıma karşıdır!
InTheNameOfScience

Yanıtlar:


116

Microsoft'un İşaret Aracı'nı kullanmayı deneyebilirsiniz

Windows Server 2008 ve .NET 3.5 için Windows SDK'sının bir parçası olarak karşıdan yüklersiniz. İndirdikten sonra komut satırından şu şekilde kullanabilirsiniz:

signtool işareti / bir MyFile.exe

Bu, kullanılabilir "en iyi sertifika" kullanarak tek bir yürütülebilir dosyayı imzalar. (Sertifikanız yoksa, bir SignTool hata mesajı gösterecektir.)

Ya da deneyebilirsiniz:

signtool signwizard

Bu, başvurunuzu imzalamanızda size yol gösterecek bir sihirbaz başlatacaktır. (Bu seçenek Windows SDK 7.0'dan sonra kullanılamaz.)


Yürütülebilir dosyayı imzalama işleminizi sınamak için kullanabileceğiniz bir sertifika almak istiyorsanız, .NET aracı Makecert'i kullanabilirsiniz .

Sertifika Oluşturma Aracı (Makecert.exe)

Kendi sertifika oluşturduk ve yürütülebilir oturum açmak için kullanmıştır sonra, elle sırayla makine için bir Güvenilen Kök CA olarak eklemek gerekir UAC o güvenilir bir kaynaktan olduğunu çalıştırmaya kullanıcı anlatmak için. Önemli . ROOT CA olarak sertifika yüklemek kullanıcı gizliliğinizi tehlikeye atacaktır. Bak DELL ile ne oldu. Bunu gerçekleştirmek için hem kodda hem de Windows aracılığıyla daha fazla bilgi bulabilirsiniz:

Umarım bu, bunu yapmaya çalışan herkes için biraz daha bilgi sağlar!


Ayrı bir soruda çalışan bir iş akışı: stackoverflow.com/questions/84847/…
The_Ghost

4
"Bu araç Visual Studio ile otomatik olarak yüklenir. Aracı çalıştırmak için Geliştirici Komut İstemi'ni (veya Windows 7'de Visual Studio Komut İstemi'ni) kullanın." msdn.microsoft.com/tr-tr/library/8s9b9yaz(v=vs.110).aspx
Westy92

Signtool tarafından kullanılan sertifika hakkında da çok meraklıyım.
Overdrivr

1
"signwizard" seçeneği Windows SDK 7.0'dan sonra kullanılamaz
Omar Reis

Makecert kullanımdan kaldırıldı ve bunun yerine bir test sertifikası oluşturmak için PowerShell cmdlet'i New-SelfSignedCertificate kullanılmalıdır. Ayrıntılar stackoverflow.com/a/51443366/38117911 (The_Ghost ile bağlantılı bir soruya cevap).
Alexander Revo

35

İşimde de aynı senaryo vardı ve işte bulgularımız

Yapmanız gereken ilk şey sertifikayı alıp bilgisayarınıza kurmaktır , bir Sertifika Yetkilisi'nden bir tane satın alabilir veya makecert kullanarak bir tane oluşturabilirsiniz. .

İşte 2 seçeneğin artıları ve eksileri

Sertifika satın alın

  • Artıları
    • CA (Sertifika Yetkilisi) tarafından verilen bir sertifikanın kullanılması, Windows'un CA'dan gelen sertifikayı kullanan herhangi bir Bilgisayardaki "bilinmeyen bir yayıncı" dan gelen bir uygulama hakkında son kullanıcıyı uyarmamasını sağlar (İşletim sistemi normalde manny CA'ların kök sertifikalarıyla birlikte gelir )
  • Eksileri:
    • CA'dan sertifika almanın bir maliyeti vardır

Makecert kullanarak sertifika oluşturma

  • Artıları:
    • Adımlar kolaydır ve sertifikayı son kullanıcılarla paylaşabilirsiniz
  • Eksileri:
    • Son kullanıcıların sertifikayı makinelerine manuel olarak yüklemeleri gerekecek ve istemcilerinize bağlı olarak bir seçenek olmayabilir
    • Makecert ile oluşturulan sertifikalar normalde üretim için değil geliştirme ve test için kullanılır

Yürütülebilir dosyayı imzalama

İstediğiniz dosyayı imzalamanın iki yolu vardır:

  • Bilgisayarda yüklü bir sertifikayı kullanma

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

    • Bu örnekte, "C: \ filename.dll" adresinde bulunan dosyayı imzalamak için Kişisel klasörde depolanan bir sertifikayı SHA1 parmak izi ile kullanıyoruz (Bu parmak izi sertifikadan geliyor).
  • Sertifika dosyası kullanma

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

    • Bu örnekte, "c: \ path \ to \ file.exe" dosyasını imzalamak için pfxpassword şifresiyle "c: \ path \ to \ mycert.pfx" sertifikasını kullanıyoruz.

İmzanızı Test Edin

Yöntem 1: signtool kullanma

Git: Başlat> CMD Çalıştır> Tamam'ı tıklatın. Komut isteminde signtool'un bulunduğu dizini girin Aşağıdakileri çalıştırın:

signtool.exe doğrulama / pa / v "C: \ dosyaadı.dll"

Yöntem 2: Windows'u kullanma

İmzalı dosyaya sağ tıklayın Özellikleri Seç Dijital İmzalar sekmesini seçin. İmza, İmza listesi bölümünde görüntülenir.

Umarım bu sana yardımcı olabilir

Kaynaklar:


Sevindim yardımcı olabilir @PhilLab
Erick Castrillo

Lütfen $$$ tahmini de verin. Teşekkürler!
InTheNameOfScience

1
@WeGoToMars Bu makalenin cheapsslsecurity.com/sslproducts/codesigningcertificate.html veya burada size yardımcı olabileceğini düşünüyorum digicert.com/code-signing
Erick Castrillo'nun

31

Açık kaynak geliştirme yapıyorsanız , Certum'dan ücretsiz ucuz kod imzalama sertifikası alabilirsiniz .

Sertifikalarını bir yılı aşkın süredir kullanıyorum ve Windows'tan bilinmeyen yayıncı mesajından kurtuluyor.

Kullandığım imza koduna gelince böyle bir komut dosyasından signtool.exe :

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

3
Artık ücretsiz görünmüyor, hala çok daha ucuz, 14 €
hultqvist

1
Haklısın, artık özgür görünmüyor. fwiw Yeni tazeledim ve hiçbir şey ödemedim. Belki de büyükbabam var. Belki iç süreçleri bozuldu. Onların web sitesi emin karmaşık.
Lee Richardson


Certum shop, açık kaynak sertifikalarının Microsoft SmartScreen Filtresi iletisini SİLMEYECEĞİNİ söyledi.
Markus Laire

17

ASP'nin dergisi ASPects, kodun nasıl imzalanacağı hakkında ayrıntılı bir açıklamaya sahiptir (Makaleyi okumak için üye olmanız gerekir). Http://www.asp-shareware.org/ adresinden indirebilirsiniz.

İşte kendi test sertifikanızı nasıl oluşturabileceğinize ilişkin bir açıklama bağlantısı .

Bu da ilginç olabilir.


7
Zeyilname dört yıl sonra: Comodo 2012'nin başlarında bir zamanlar tehlikeye düştü ( blogs.comodo.com/it-security/data-security/… ) ve bu nedenle birçok kullanıcı aracısı artık Comodo kök yetkilisi olan sertifikaları reddetti
A. Wilson

8
Comodo 2013'ün ortalarında hala riskli bir bahis mi ve 'kullanıcı aracıları' ile bu, Microsoft / Windows'un bu kötü şöhretli 'bilinmeyen yayıncı' mesajını gösterip göstermeyeceğine karar verdikleri anlamına geliyor.
Dan W

Üzgünüz, 1) güncel olmayan ve 2) açık servis önerileri kaldırıldı, şimdi konu dışı bırakıldı (çünkü 1.).
deceze



4

Ve yine başka bir seçenek, Windows 10'da geliştiriyorsanız, ancak Microsoft'un signtool.exe'sini yüklemediyseniz, uygulamanızı imzalamak için Windows'ta Ubuntu'daki Bash'i kullanabilirsiniz. İşte tükendiğinde:

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


osslsigncodealtında da kullanılabilir cygwin, bu yüzden zaten (benim gibi) kullanıyorsanız, WSL'ye geçmek yerine geçerli ortamınızda oturum açabilirsiniz.
thoni56

4

.Exe (setup / installer) dosyasını imzalamak için aşağıdaki bağlantıyı kullanın (Microsoft kurulum tabelasını kullanmadan exe / setup dosyasını imzalayın)

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

örnek komut java -jar jsign-2.0.jar --keystore keystore.jks "--alias diğer adı - storepass parolası MyInstaller.exe

Benim için çalıştı :)


3

Bu soruya doğrudan bir cevap değildir, ancak er ya da geç bir programcı elini cüzdanına sokacağı için yakından ilişkilidir (ve umarım faydalıdır):

Yani, EV imzası fiyatları:

1 Yıl 350 $ + (50 $ gizli ücret)
2 Yıl 600 $
3 Yıl 750 $
[www.ksoftware.net] [3]
eToken USB bellek olarak gönderildi. Okuyucu gerekmez.
Aslında Comodo'dan (Sectigo) satın alıyorsunuz

1 Yıl 350 euro
3 Yıl 799 euro
sklep.certum.pl

1 Yıl $ 499 USD
3 Yıl $ 897 USD
sectigo.com

1 Yıl 410 $ toplam
2 Yıl 760 $ toplam
3 Yıl 950 $ toplam
www.globalsign.com

1 Yıl: 600 $ (104 $)
3 Yıl:?
www.digicert.com

1 Yıl: 700 $
3 Yıl: saçma pahalı
[ https://trustcenter.websecurity.symantec.com/]

Daha fazla fiyat burada:
https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html


Ayrıca Erick Castrillo tarafından eklenen bağlantıya bakın: cheapsslsecurity.com/sslproducts/codesigningcertificate.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.