Menandatangani file Windows EXE

180

Saya memiliki file EXE yang ingin saya tandatangani sehingga Windows tidak akan memperingatkan pengguna akhir tentang aplikasi dari "penerbit tidak dikenal". Saya bukan pengembang Windows. Aplikasi yang dimaksud adalah screensaver yang dihasilkan dari aplikasi yang menghasilkan aplikasi screensaver. Karena itu saya tidak memiliki pengaruh pada bagaimana file dihasilkan.

Saya sudah mengetahui bahwa saya akan memerlukan sertifikat penandatanganan kode dari CA seperti Verisign atau instantssl.com. Yang tidak saya mengerti adalah apa yang harus saya lakukan (jika memungkinkan) untuk menandatangani file EXE saya. Apa itu penjelasan sederhana?

Jawaban Mel Green membawa saya lebih jauh, tetapi signtool ingin saya menentukan sertifikat apa yang akan digunakan dalam kasus apa pun. Bisakah saya mendapatkan sertifikat penandatanganan kode gratis untuk menguji apakah ini akan bekerja untuk saya?

Tentukan jenis sertifikat mana yang benar. Sebagian besar situs hanya menyebutkan "penandatanganan kode" dan berbicara tentang menandatangani aplikasi yang sebenarnya dikompilasi oleh pengguna. Ini tidak terjadi pada saya.

Lasar
sumber
3
Hanya ingin tahu - berapa banyak yang harus dibayar untuk membeli sertifikat?
InTheNameOfScience
2
@Rigel kira-kira $ 400 setahun, mungkin tidak layak :)
Sharan Arumugam
@SharanArumugam: WHAAT ?????? Ini seperti Microsfot menentang perangkat lunak murah / gratis!
InTheNameOfScience

Jawaban:

116

Anda dapat mencoba menggunakan Alat Masuk Microsoft

Anda mengunduhnya sebagai bagian dari SDK Windows untuk Windows Server 2008 dan .NET 3.5. Setelah diunduh, Anda dapat menggunakannya dari baris perintah seperti:

signtool sign / a MyFile.exe

Ini menandatangani satu executable, menggunakan "sertifikat terbaik" yang tersedia. (Jika Anda tidak memiliki sertifikat, itu akan menampilkan pesan kesalahan SignTool.)

Atau Anda dapat mencoba:

signtool signwizard

Ini akan meluncurkan wizard yang akan memandu Anda saat menandatangani aplikasi Anda. (Opsi ini tidak tersedia setelah Windows SDK 7.0.)


Jika Anda ingin mendapatkan sertifikat yang dapat Anda gunakan untuk menguji proses penandatanganan yang dapat dieksekusi, Anda dapat menggunakan .NET tool Makecert .

Alat Pembuatan Sertifikat (Makecert.exe)

Setelah Anda membuat sertifikat Anda sendiri dan menggunakannya untuk menandatangani executable Anda, Anda harus menambahkannya secara manual sebagai Root Root CA untuk mesin Anda agar UAC memberi tahu pengguna yang menjalankannya bahwa itu dari sumber tepercaya. Penting . Menginstal sertifikat sebagai ROOT CA akan membahayakan privasi pengguna Anda. Lihat apa yang terjadi dengan DELL. Anda dapat menemukan lebih banyak informasi untuk mencapai ini baik dalam kode dan melalui Windows di:

Semoga itu memberikan beberapa informasi lebih bagi siapa pun yang mencoba melakukan ini!

Mel Green
sumber
Alur kerja yang berfungsi dalam pertanyaan terpisah: stackoverflow.com/questions/84847/…
The_Ghost
4
"Alat ini diinstal secara otomatis dengan Visual Studio. Untuk menjalankan alat ini, gunakan Prompt Perintah Pengembang (atau Prompt Perintah Visual Studio di Windows 7)." msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx
Westy92
Sangat ingin tahu tentang sertifikat yang digunakan oleh signtool juga.
Overdrivr
1
Opsi "signwizard" tidak tersedia setelah Windows SDK 7.0
Omar Reis
Makecert telah ditinggalkan dan cmdlet PowerShell New-SelfSignedCertificate harus digunakan untuk membuat sertifikat pengujian. Detail di stackoverflow.com/a/51443366/38117911 (jawaban atas pertanyaan yang ditautkan oleh The_Ghost).
Alexander Revo
35

Saya memiliki skenario yang sama dalam pekerjaan saya dan inilah temuan kami

Hal pertama yang harus Anda lakukan adalah mendapatkan sertifikat dan menginstalnya di komputer Anda, Anda dapat membeli satu dari Otoritas Sertifikat atau menghasilkan satu menggunakan makecert .

Berikut adalah pro dan kontra dari 2 opsi

Beli sertifikat

  • Pro
    • Menggunakan sertifikat yang dikeluarkan oleh CA (Otoritas Sertifikat) akan memastikan bahwa Windows tidak akan memperingatkan pengguna akhir tentang aplikasi dari "penerbit tidak dikenal" di Komputer mana pun yang menggunakan sertifikat dari CA (OS biasanya dilengkapi dengan sertifikat root dari manny CA's )
  • Cons:
    • Ada biaya yang diperlukan untuk mendapatkan sertifikat dari CA

Hasilkan sertifikat menggunakan Makecert

  • Pro:
    • Langkah-langkahnya mudah dan Anda dapat berbagi sertifikat dengan pengguna akhir
  • Cons:
    • Pengguna akhir harus menginstal sertifikat secara manual di mesin mereka dan tergantung pada klien Anda yang mungkin bukan pilihan
    • Sertifikat yang dihasilkan dengan makecert biasanya digunakan untuk pengembangan dan pengujian, bukan produksi

Tanda tangani file yang dapat dieksekusi

Ada dua cara menandatangani file yang Anda inginkan:

  • Menggunakan sertifikat yang dipasang di komputer

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

    • Dalam contoh ini kita menggunakan sertifikat yang disimpan di folder Pribadi dengan sidik jari SHA1 (sidik jari ini berasal dari sertifikat) untuk menandatangani file yang terletak di "C: \ filename.dll"
  • Menggunakan file sertifikat

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

    • Dalam contoh ini kita menggunakan sertifikat "c: \ path \ to \ mycert.pfx" dengan kata sandi pfxpassword untuk menandatangani file "c: \ path \ to \ file.exe"

Uji Tanda Tangan Anda

Metode 1: Menggunakan signtool

Pergi ke: Mulai> Jalankan Jenis CMD> klik OK Pada prompt perintah, masukkan direktori di mana signtool ada. Jalankan yang berikut:

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

Metode 2: Menggunakan Windows

Klik kanan file yang ditandatangani Pilih Properti Pilih tab Tanda Tangan Digital. Tanda tangan akan ditampilkan di bagian Daftar tanda tangan.

Saya harap ini bisa membantu Anda

Sumber:

Erick Castrillo
sumber
Senang saya bisa membantu @ PhilLab
Erick Castrillo
Tolong juga berikan perkiraan $$$. Terima kasih!
InTheNameOfScience
1
@ WeGoToMars Saya pikir artikel ini dapat membantu Anda cheapsslsecurity.com/sslproducts/codesigningcertificate.html atau di sini digicert.com/code-signing
Erick Castrillo
31

Anda bisa mendapatkan sertifikat penandatanganan kode murah gratis dari Certum jika Anda melakukan pengembangan sumber terbuka.

Saya telah menggunakan sertifikat mereka selama lebih dari setahun, dan itu menghilangkan pesan penerbit yang tidak dikenal dari Windows.

Sejauh kode penandatanganan saya menggunakan signtool.exe dari skrip seperti ini:

signtool.exe sign /t http://timestamp.verisign.com/scripts/timstamp.dll /f "MyCert.pfx" /p MyPassword /d SignedFile.exe SignedFile.exe
Lee Richardson
sumber
3
Tidak terlihat gratis lagi, masih jauh lebih murah, € 14
hultqvist
1
Anda benar itu tidak terlihat gratis lagi. Saya baru saja memperbarui, dan saya tidak membayar apa-apa. Mungkin saya kakek. Mungkin proses internal mereka rusak. Situs web mereka memang rumit.
Lee Richardson
4
Itu € 25,00 sekarang? ( en.sklep.certum.pl/data-safety/code-signing-certificates/… )
ewerybody
Toko Certum mengatakan bahwa sertifikat sumber terbuka mereka TIDAK AKAN menghapus pesan Microsoft SmartScreen Filter.
Markus Laire
17

Majalah ASP, ASPect, memiliki deskripsi terperinci tentang cara menandatangani kode (Anda harus menjadi anggota untuk membaca artikel). Anda dapat mengunduhnya melalui http://www.asp-shareware.org/

Berikut tautan ke deskripsi bagaimana Anda dapat membuat sertifikat pengujian Anda sendiri .

Ini mungkin juga menarik.

Andreas
sumber
7
Tambahan empat tahun kemudian: Comodo dikompromikan pada awal 2012 ( blogs.comodo.com/it-security/data-security/… ) dan begitu banyak agen pengguna sekarang menolak sertifikat dengan otoritas root Comodo
A. Wilson
8
Apakah Comodo masih merupakan taruhan berisiko pada pertengahan 2013, dan oleh 'agen pengguna', apakah itu berarti Microsoft / Windows sudah pasti mereka yang memutuskan apakah akan menampilkan pesan 'penerbit tidak terkenal' yang terkenal itu.
Dan W
Maaf, menghapus rekomendasi layanan eksplisit, yang 1) ketinggalan zaman dan 2) telah dikesampingkan sekarang (karena 1.).
tipuan
10

Opsi lain, jika Anda perlu menandatangani executable pada kotak Linux adalah dengan menggunakan signcode dari alat proyek Mono . Ini didukung di Ubuntu .

mozey
sumber
1
Itu sangat membantu! Paket ini juga tersedia dalam bahasa Debian, dengan nama mono-devel .
Marian
8

Referensi https://steward-fu.github.io/website/driver/wdm/self_sign.htm Catatan: signtool.exe dari Microsoft SDK

1. pertama kali (untuk membuat sertifikat pribadi)

Makecert -r -pe -ss YourName YourName.cer

certmgr.exe -menambahkan NamaAnda.cer -s -r root localMachine

2.Setelah (untuk menambahkan tanda Anda ke aplikasi Anda)

signtool sign / s YourName YourApp.exe

Ethan Kuo
sumber
4

Dan pilihan lain, jika Anda mengembangkan pada Windows 10 tetapi tidak memiliki Microsoft signtool.exe diinstal, Anda dapat menggunakan Bash di Ubuntu pada Windows untuk menandatangani aplikasi Anda. Berikut ini adalah run down:

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

Stacey Richards
sumber
osslsigncodejuga tersedia di bawah cygwin, jadi jika Anda sudah menggunakan itu (seperti saya), maka Anda dapat masuk ke lingkungan Anda saat ini, daripada perlu beralih ke WSL.
thoni56
4

Gunakan tautan berikut untuk menandatangani file .exe (setup / installer) (masuk file exe / setup tanpa menggunakan Microsoft setup signtool)

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

perintah sampel java -jar jsign-2.0.jar --keystore keystore.jks "--alias alias --storepass kata sandi MyInstaller.exe

Bekerja untuk saya :)

pengguna2085962
sumber
3

Ini bukan jawaban langsung untuk pertanyaan, tetapi terkait erat (dan saya harap berguna) karena cepat atau lambat seorang programmer akan meletakkan tangannya ke dalam dompet:

Jadi, harga untuk tanda tangan EV:

1 Tahun $ 350 + ($ 50 biaya tersembunyi)
2 Tahun $ 600
3 Tahun $ 750
[www.ksoftware.net] [3]
eToken dikirim sebagai stik USB. Tidak perlu pembaca.
Anda sebenarnya membeli dari Comodo (Sectigo)

1 Tahun 350 euro
3 Tahun 799 euro
sklep.certum.pl

1 Tahun $ 499 USD
3 Tahun $ 897 USD
sectigo.com

1 Tahun $ 410 total
2 Tahun $ 760 total
3 Tahun $ 950 total
www.globalsign.com

1 Tahun: $ 600 ($ 104)
3 Tahun:?
www.digicert.com

1 Tahun: $ 700
3 Tahun: mahal konyol
[ https://trustcenter.websecurity.symantec.com/]

Harga lebih lanjut di sini:
https://cheapsslsecurity.com/sslproducts/codesigningcertificate.html


Lihat juga tautan yang ditambahkan oleh Erick Castrillo: cheapsslsecurity.com/sslproducts/codesigningcertificate.html

InTheNameOfScience
sumber