SignTool

SignTool adalah alat baris perintah yang menandatangani file secara digital, memverifikasi tanda tangan dalam file, dan file stempel waktu. Untuk informasi tentang mengapa penandatanganan file penting, lihat Pengantar penandatanganan kode.

Alat ini diinstal di folder \Bin dari jalur penginstalan Microsoft Windows Software Development Kit (SDK), misalnya: C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\signtool.exe.

SignTool tersedia sebagai bagian dari Windows SDK, yang dapat Anda unduh dari Windows SDK.

Catatan

SDK Windows 10, Windows 10 HLK, Windows 10 WDK, dan Windows 10 ADK membangun 20236 dan yang lebih baru mengharuskan Anda menentukan algoritma hash. Perintah SignTool sign memerlukan opsi algoritma hash file (/fd) dan opsi algoritma hash stempel waktu (/td) selama penandatanganan dan penandatanganan waktu.

Jika /fd tidak ditentukan selama penandatanganan dan jika /td tidak ditentukan selama stempel waktu, perintah melemparkan peringatan, kode kesalahan 0, awalnya. Di versi SignTool yang lebih baru, peringatan menjadi kesalahan. Kami merekomendasikan SHA256. Hal ini dianggap lebih aman daripada SHA1 oleh industri.

Sintaks

signtool [command] [options] [file_name | ...]

Parameter

Argumen Deskripsi
command Salah satu dari empat perintah yang menentukan operasi yang akan dilakukan pada file: catdb, , signtimestamp, atau verify. Untuk deskripsi setiap perintah, lihat tabel berikutnya.
options Opsi yang memodifikasi perintah. Selain opsi /q dan /v global, setiap perintah mendukung serangkaian opsi yang unik.
file_name Jalur ke file yang akan ditandatangani.

SignTool mendukung perintah berikut:

Perintah Deskripsi
catdb Menambahkan file katalog ke, atau menghapusnya dari, database katalog. Database katalog digunakan untuk pencarian otomatis file katalog dan diidentifikasi oleh GUID. Untuk daftar opsi yang didukung oleh catdb perintah, lihat opsi perintah catdb.
sign Menandatangani file secara digital. Tanda tangan digital melindungi file dari perubahan dan memungkinkan pengguna memverifikasi penanda tangan berdasarkan sertifikat penandatanganan. Untuk daftar opsi yang didukung oleh sign perintah, lihat menandatangani opsi perintah.
timestamp File stempel waktu. Untuk daftar opsi yang didukung oleh timestamp perintah, lihat opsi perintah tanda waktu.
verify Memverifikasi tanda tangan digital file. Menentukan apakah sertifikat penandatanganan dikeluarkan oleh otoritas tepercaya, apakah sertifikat penandatanganan telah dicabut, dan, secara opsional, apakah sertifikat penandatanganan valid untuk kebijakan tertentu. Untuk daftar opsi yang didukung oleh verify perintah, lihat memverifikasi opsi perintah.

Opsi berikut berlaku untuk semua perintah SignTool.

Opsi global Deskripsi
/q Tidak menampilkan output jika perintah berhasil dijalankan, dan menampilkan output minimal jika perintah gagal.
/v Menampilkan output verbose terlepas dari apakah perintah berhasil atau gagal dijalankan, dan menampilkan pesan peringatan.
/debug Menampilkan informasi penelusuran kesalahan.

Opsi perintah Catdb

Tabel berikut ini mencantumkan opsi yang bisa digunakan dengan perintah catdb.

Opsi Catdb Deskripsi
/d Menentukan bahwa database katalog default diperbarui. Jika Anda tidak menggunakan atau /d/g, SignTool memperbarui komponen sistem dan database driver.
/gGUID Menentukan bahwa database katalog yang diidentifikasi oleh GUID diperbarui.
/r Menghapus katalog yang ditentukan dari database katalog. Jika opsi ini tidak ditentukan, SignTool menambahkan katalog yang ditentukan ke database katalog.
/u Menentukan bahwa nama unik secara otomatis dibuat untuk file katalog yang ditambahkan. Jika perlu, file katalog diganti namanya untuk mencegah konflik nama dengan file katalog yang ada. Jika opsi ini tidak ditentukan, SignTool menimpa katalog yang sudah ada yang memiliki nama yang sama dengan katalog yang ditentukan.

Catatan

Database katalog digunakan untuk pencarian otomatis file katalog.

Tanda tangani opsi perintah

Tabel berikut ini mencantumkan opsi yang bisa digunakan dengan perintah sign.

Opsi perintah sign Deskripsi
/a Secara otomatis memilih sertifikat penandatanganan terbaik. SignTool menemukan semua sertifikat valid yang memenuhi semua kondisi yang ditentukan dan memilih sertifikat yang valid untuk waktu terlama. Jika opsi ini tidak ada, SignTool hanya mengharapkan untuk menemukan satu sertifikat penandatanganan yang valid.
/acfile Menambahkan sertifikat lain dari file ke blok tanda tangan.
/as Menambahkan tanda tangan ini. Jika tidak ada tanda tangan utama, tanda tangan ini dijadikan tanda tangan utama sebagai gantinya.
/cCertTemplateName Menentukan Nama Templat Sertifikat (ekstensi Microsoft) untuk sertifikat penandatanganan.
/cspCSPName Menentukan penyedia layanan kriptografi (CSP) yang berisi kontainer kunci privat.
/dDesc Menentukan deskripsi konten yang ditandatangani.
/dgDari Menghasilkan hash yang akan ditandatangani dan file PKCS7 yang tidak ditandatangani. File output digest dan PKCS7 adalah <Path>\<FileName.dig> dan <Path>\<FileName.p7u>. Untuk menghasilkan file XML tambahan, gunakan /dxml.
/diDari Membuat tanda tangan dengan menyerap hash yang ditandatangani ke file PKCS7 yang tidak ditandatangani. File digest dan PKCS7 yang ditandatangani input harus <Path>\<FileName.dig.signed> dan <Path>\<FileName.p7u>.
/dlibDLL Menentukan DLL yang mengimplementasikan AuthenticodeDigestSign fungsi untuk menandatangani hash. Opsi ini setara dengan menggunakan SignTool secara terpisah dengan /dgopsi , /ds, dan /di . Opsi ini memanggil ketiganya sebagai satu operasi atomik.
/dmdfFilename Saat digunakan dengan /dg opsi , teruskan konten file ke AuthenticodeDigestSign fungsi tanpa modifikasi.
/ds Menandatangani hash saja. File input harus menjadi hash yang dihasilkan oleh /dg opsi . File output adalah: <File.signed>.
/duURL Menentukan Uniform Resource Locator (URL) untuk deskripsi yang diperluas dari konten yang ditandatangani.
/dxml Saat digunakan dengan /dg opsi , menghasilkan file XML. File output adalah: <Path>\<FileName>.dig.xml.
/fSignCertFile Menentukan sertifikat penandatanganan dalam file. Jika file dalam format Personal Information Exchange (PFX) dan dilindungi oleh kata sandi, gunakan opsi /p untuk menentukan kata sandi. Jika file tidak berisi kunci privat, gunakan /csp opsi dan /kc untuk menentukan CSP dan nama kontainer kunci privat.
/fdalg Menentukan algoritma digest file yang akan digunakan untuk membuat tanda tangan file. Catatan: Jika /fd opsi tidak ditentukan saat menandatangani, perintah akan menghasilkan kesalahan.
/fd certHash Menentukan string "certHash" menyebabkan perintah menggunakan algoritma yang ditentukan pada sertifikat penandatanganan. Catatan: Jika /fd opsi tidak ditentukan saat menandatangani, perintah akan menghasilkan kesalahan.
/iIssuerName Menentukan nama penerbit sertifikat penandatanganan. Nilai ini dapat menjadi substring dari seluruh nama penerbit.
/kcPrivKeyContainerName Menentukan nama kontainer kunci privat.
/nSubjectName Menentukan nama subjek sertifikat penandatanganan. Nilai ini dapat menjadi substring dari seluruh nama subjek.
/nph Jika didukung, menekan hash halaman untuk file executable. Default ditentukan oleh variabel lingkungan SIGNTOOL_PAGE_HASHES dan oleh versi wintrust.dll . Opsi ini diabaikan untuk file non-PE.
/pPassword Menentukan kata sandi yang akan digunakan saat membuka file PFX. /f Gunakan opsi untuk menentukan file PFX.
/p7Dari Menentukan bahwa file Public Key Cryptography Standards (PKCS) #7 diproduksi untuk setiap file konten yang ditentukan. File PKCS #7 diberi nama <path>\<filename.p7>.
/p7ceValue Menentukan opsi untuk konten PKCS #7 yang ditandatangani. Atur Nilai ke Embedded untuk menyematkan konten yang ditandatangani dalam file PKCS #7, atau ke untuk DetachedSignedData menghasilkan bagian data yang ditandatangani dari file PKCS #7 yang dilepas. /p7ce Jika opsi tidak ditentukan, konten yang ditandatangani disematkan secara default.
/p7co<OID> Menentukan pengidentifikasi objek (OID) yang mengidentifikasi konten PKCS #7 yang ditandatangani.
/ph Jika didukung, menghasilkan hash halaman untuk file executable.
/rRootSubjectName Menentukan nama subjek sertifikat akar yang harus ditautkan dengan sertifikat penandatanganan. Nilai ini dapat berupa substring dari seluruh nama subjek sertifikat akar.
/sStoreName Menentukan penyimpanan yang akan dibuka ketika perintah mencari sertifikat. Jika opsi ini tidak ditentukan, perintah akan membuka penyimpanan My .
/sha1Hash Menentukan hash SHA1 dari sertifikat penandatanganan. Hash SHA1 umumnya digunakan ketika beberapa sertifikat memenuhi kriteria yang ditentukan oleh opsi yang tersisa.
/sm Menentukan bahwa perintah menggunakan penyimpanan mesin, bukan penyimpanan pengguna.
/tURL Menentukan URL server stempel waktu. Jika opsi ini atau /tr tidak ditentukan, file yang ditandatangani tidak diberi stempel waktu. Jika penandaan waktu gagal, perintah akan menghasilkan peringatan. Opsi ini tidak dapat digunakan dengan /tr opsi .
/tdalg Digunakan dengan opsi /tr untuk meminta algoritma hash yang digunakan oleh server stempel waktu RFC 3161. Catatan: Jika /td tidak ditentukan saat penandaan waktu, perintah akan menghasilkan kesalahan.
/trURL Menentukan URL server stempel waktu RFC 3161. Jika opsi ini atau /t tidak ditentukan, file yang ditandatangani tidak diberi stempel waktu. Jika penandaan waktu gagal, perintah akan menghasilkan peringatan. Opsi ini tidak dapat digunakan dengan /t opsi .
/uUsage Menentukan penggunaan kunci yang ditingkatkan (EKU) yang harus ada dalam sertifikat penandatanganan. Nilai penggunaan dapat ditentukan oleh OID atau string. Penggunaan default adalah Code Signing atau 1.3.6.1.5.5.7.3.3.
/uw Menentukan penggunaan Windows System Component Verification atau 1.3.6.1.4.1.311.10.3.6.

Untuk contoh penggunaan, lihat Menggunakan SignTool untuk Menandatangani File.

Opsi perintah tanda waktu

Tabel berikut ini mencantumkan opsi yang bisa digunakan dengan perintah timestamp.

Opsi tanda waktu Deskripsi
/p7 File PKCS #7 stempel waktu.
/tURL Menentukan URL server stempel waktu. File yang diberi stempel waktu harus telah ditandatangani sebelumnya. Opsi /t atau /tr diperlukan.
/tdalg Digunakan dengan opsi /tr untuk meminta algoritma hash yang digunakan oleh server stempel waktu RFC 3161. Catatan: Jika /td tidak ditentukan saat penandaan waktu, perintah akan menghasilkan peringatan.
/tpindex Memberi stempel waktu tanda tangan pada indeks.
/trURL Menentukan URL server stempel waktu RFC 3161. File yang diberi stempel waktu harus telah ditandatangani sebelumnya. Opsi /tr atau /t diperlukan.

Memverifikasi opsi perintah

Opsi verify Deskripsi
/a Menentukan apakah semua metode dapat digunakan untuk memverifikasi file. Pertama, SignTool mencari database katalog untuk menentukan apakah file masuk ke katalog. Jika file tidak masuk ke katalog apa pun, SignTool mencoba memverifikasi tanda tangan file yang disematkan. Kami merekomendasikan opsi ini saat memverifikasi file yang mungkin atau mungkin tidak masuk ke katalog. Contoh file yang mungkin atau mungkin tidak ditandatangani termasuk file atau driver Windows.
/ad Menemukan katalog dengan menggunakan database katalog default.
/all Memverifikasi semua tanda tangan dalam file dengan beberapa tanda tangan.
/as Menemukan katalog dengan menggunakan database katalog komponen sistem (driver).
/agCatDBGUID Menemukan katalog dalam database katalog yang diidentifikasi oleh GUID.
/cCatFile Menentukan file katalog berdasarkan nama.
/d Mencetak URL deskripsi dan deskripsi. Windows Vista dan yang lebih lama: Opsi ini tidak didukung.
/dsIndex Memverifikasi tanda tangan pada posisi tertentu.
/hash{SHA1|SHA256} Menentukan algoritme hash opsional yang akan digunakan saat mencari file dalam katalog.
/kp Melakukan verifikasi dengan menggunakan kebijakan penandatanganan driver mode kernel x64.
/ms Menggunakan beberapa semantik verifikasi. Perilaku ini adalah default panggilan WinVerifyTrust .
/oVersion Memverifikasi file berdasarkan versi sistem operasi. Parameter versi adalah dari formulir: <PlatformID>:<VerMajor>.< VerMinor>.< BuildNumber>. Kami merekomendasikan penggunaan /o opsi . Jika /o tidak ditentukan, SignTool mungkin mengembalikan hasil yang tidak terduga. Misalnya, jika Anda tidak menyertakan /o, maka katalog sistem yang memvalidasi dengan benar pada sistem operasi yang lebih lama mungkin tidak divalidasi dengan benar pada sistem operasi yang lebih baru.
/p7 Memverifikasi file PKCS #7. Tidak ada kebijakan yang digunakan untuk validasi PKCS #7. SignTool memeriksa tanda tangan dan membangun rantai untuk sertifikat penandatanganan.
/pa Menentukan bahwa Kebijakan Verifikasi Autentikasi Default digunakan. /pa Jika opsi tidak ditentukan, SignTool menggunakan Kebijakan Verifikasi Driver Windows. Opsi ini tidak dapat digunakan dengan catdb opsi .
/pgPolicyGUID Menentukan kebijakan verifikasi oleh GUID. GUID sesuai dengan ActionID kebijakan verifikasi. Opsi ini tidak dapat digunakan dengan catdb opsi .
/ph Cetak dan verifikasi nilai hash halaman. Windows Vista dan yang lebih lama: Opsi ini tidak didukung.
/rRootSubjectName Menentukan nama subjek sertifikat akar yang harus ditautkan dengan sertifikat penandatanganan. Nilai ini dapat berupa substring dari seluruh nama subjek sertifikat akar.
/tw Menentukan bahwa perintah menghasilkan peringatan jika tanda tangan tidak diberi stempel waktu.

Perintah SignTool verify menentukan apakah sertifikat penandatanganan dikeluarkan oleh otoritas tepercaya, apakah sertifikat penandatanganan telah dicabut, dan, secara opsional, apakah sertifikat penandatanganan valid untuk kebijakan tertentu.

Perintah SignTool verify menghasilkan status tanda tangan yang disematkan kecuali opsi ditentukan untuk mencari katalog, seperti /a, , /ad/as, /ag, atau /c.

Mengembalikan nilai

SignTool mengembalikan salah satu kode keluar berikut saat berakhir.

Keluar dari kode Deskripsi
0 Eksekusi berhasil.
1 Eksekusi gagal.
2 Eksekusi selesai dengan peringatan.

Contoh

Perintah berikut menambahkan file katalog MyCatalogFileName.cat ke komponen sistem dan database driver. Opsi ini /u menghasilkan nama unik jika perlu untuk mencegah mengganti file katalog yang ada bernama MyCatalogFileName.cat.

signtool catdb /v /u MyCatalogFileName.cat

Perintah berikut menandatangani file secara otomatis dengan menggunakan sertifikat terbaik.

signtool sign /a /fd SHA256 MyFile.exe 

Perintah berikut menandatangani file secara digital dengan menggunakan sertifikat yang disimpan dalam file PFX yang dilindungi kata sandi.

signtool sign /f MyCert.pfx /p MyPassword /fd SHA256 MyFile.exe 

Perintah berikut menandatangani secara digital dan waktu memberi stempel file. Sertifikat yang digunakan untuk menandatangani file disimpan dalam file PFX.

signtool sign /f MyCert.pfx /t http://timestamp.digicert.com /fd SHA256 MyFile.exe 

Perintah berikut menandatangani file dengan menggunakan sertifikat yang terletak di penyimpanan My yang memiliki nama subjek My Company Certificate.

signtool sign /n "My Company Certificate" /fd SHA256 MyFile.exe 

Perintah berikut menandatangani kontrol ActiveX dan menyediakan informasi yang ditampilkan di browser saat pengguna diminta untuk menginstal kontrol.

signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html /fd SHA256 MyControl.exe 

Waktu perintah berikut memberi stempel file yang telah ditandatangani secara digital.

signtool timestamp /t http://timestamp.digicert.com MyFile.exe

Waktu perintah berikut memberi stempel file menggunakan server stempel waktu RFC 3161.

signtool timestamp /tr http://timestamp.digicert.com /td SHA256 MyFile.exe

Perintah berikut memverifikasi bahwa file telah ditandatangani.

signtool verify MyFile.exe

Perintah berikut memverifikasi file sistem yang dapat masuk ke katalog.

signtool verify /a SystemFile.dll

Perintah berikut memverifikasi file sistem yang ditandatangani di katalog bernama MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll