SignTool.exe (Sign Tool)

Sign Tool adalah alat baris perintah yang menandatangani file secara digital, memverifikasi tanda tangan dalam file, dan file stempel waktu.

Alat ini secara otomatis diinstal dengan Visual Studio. Untuk menjalankan alat ini, gunakan Perintah Pengembang Visual Studio atau PowerShell Pengembang Visual Studio.

Catatan

Build 20236 dan yang lebih baru dari SDK Windows 10, Windows 10 HLK, Windows 10 WDK, dan Windows 10 ADK memerlukan penentuan algoritma hash. Perintah SignTool sign memerlukan opsi /fdalgoritma digest file dan /tdalgoritma digest stempel waktu yang ditentukan selama penandatanganan dan pemberian stempel waktu. Kesalahan (kode kesalahan 1) akan dilemparkan jika /fd tidak ditentukan selama penandatanganan dan jika /td tidak ditentukan selama pemberian tanda waktu.

Pada perintah, masukkan berikut ini:

Sintaks

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

Parameter

Argumen Deskripsi
command Salah satu dari empat perintah (catdb, sign, Timestamp, atau Verify) yang menentukan operasi yang akan dilakukan pada file. 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.

Perintah berikut didukung oleh Sign Tool. Setiap perintah digunakan dengan serangkaian opsi yang berbeda, yang tercantum di bagian masing-masing.

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 perintahcatdb, 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 perintahsign, lihat Opsi Perintah sign.
Timestamp File stempel waktu. Untuk daftar opsi yang didukung oleh perintahTimeStamp, lihat Opsi Perintah TimeStamp.
Verify Memverifikasi tanda tangan digital file dengan 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 perintahVerify, lihat Opsi Perintah Verify.

Opsi berikut berlaku untuk semua perintah Sign Tool.

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 opsi /d atau /g tidak digunakan, Sign Tool memperbarui komponen sistem dan database driver.
/gGUID Menentukan bahwa database katalog yang diidentifikasi oleh GUID pengidentifikasi unik global diperbarui.
/r Menghapus katalog yang ditentukan dari database katalog. Jika opsi ini tidak ditentukan, Sign Tool 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, Sign Tool menimpa katalog yang ada yang memiliki nama yang sama dengan katalog yang ditambahkan.

Opsi Perintah sign

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

Opsi perintah sign Deskripsi
/a Secara otomatis memilih sertifikat penandatanganan terbaik. Sign Tool akan menemukan semua sertifikat valid yang memenuhi semua kondisi yang ditentukan dan memilih yang valid untuk waktu terpanjang. Jika opsi ini tidak ada, Sign Tool mengharapkan untuk menemukan hanya satu sertifikat penandatanganan yang valid.
/acfile Menambahkan sertifikat tambahan 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.
/duURL Menentukan Uniform Resource Locator (URL) untuk deskripsi yang diperluas dari konten yang ditandatangani.
/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 opsi /csp dan /kc untuk menentukan CSP dan nama kontainer kunci privat.
/fd Menentukan algoritma digest file yang akan digunakan untuk membuat tanda tangan file.
Catatan: Kesalahan dihasilkan jika pengalihan /fd tidak disediakan saat menandatangani.
/fdcertHash Menentukan certHash string akan default ke algoritma yang digunakan pada sertifikat penandatanganan.
Catatan: Kesalahan dihasilkan jika pengalihan /fd tidak disediakan saat menandatangani.
/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. (Gunakan opsi /f 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 jalur\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 "DetachedSignedData" untuk menghasilkan bagian data yang ditandatangani dari file PKCS #7 yang dicopot. Jika opsi /p7ce tidak digunakan, 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 mungkin merupakan substring dari seluruh nama subjek sertifikat akar.
/sStoreName Menentukan penyimpanan yang akan dibuka ketika mencari sertifikat. Jika opsi ini tidak ditentukan, penyimpanan My akan dibuka.
/sha1Hash Menentukan hash SHA1 dari sertifikat penandatanganan. Hash SHA1 umumnya ditentukan ketika beberapa sertifikat memenuhi kriteria yang ditentukan oleh pengalihan yang tersisa.
/sm Menentukan apakah penyimpanan komputer, bukan penyimpanan pengguna, digunakan.
/tURL Menentukan URL server stempel waktu. Jika opsi ini (atau /tr) tidak ada, file yang ditandatangani tidak akan diberi stempel waktu. Peringatan dihasilkan jika pemberian stempel waktu gagal. Opsi ini tidak dapat digunakan dengan opsi /tr.
/tdalg Digunakan dengan opsi /tr untuk meminta algoritma hash yang digunakan oleh server stempel waktu RFC 3161.
Catatan: Kesalahan dihasilkan jika /td tidak disediakan sewaktu memberi stempel waktu.
/trURL Menentukan URL server stempel waktu RFC 3161. Jika opsi ini (atau /t) tidak ada, file yang ditandatangani tidak akan diberi stempel waktu. Peringatan dihasilkan jika pemberian stempel waktu gagal. Opsi ini tidak dapat digunakan dengan opsi /t.
/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" (1.3.6.1.5.5.7.3.3).
/uw Menentukan penggunaan "Windows System Component Verification" (1.3.6.1.4.1.311.10.3.6).

Untuk contoh penggunaan, lihat Menggunakan SignTool untuk Menandatangani File.

Opsi Perintah TimeStamp

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

Opsi TimeStamp 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: Kesalahan dihasilkan jika /td tidak disediakan sewaktu memberi stempel waktu.
/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.

Untuk contoh penggunaan, lihat Menambahkan Stempel Waktu ke File yang Ditandatangani Sebelumnya.

Opsi Perintah Verify

Opsi verify Deskripsi
/a Menentukan apakah semua metode dapat digunakan untuk memverifikasi file. Pertama, database katalog dicari untuk menentukan apakah file ditandatangani di katalog. Jika file tidak ditandatangani di katalog apa pun, Sign Tool mencoba memverifikasi tanda tangan yang disematkan dari file. Opsi ini direkomendasikan saat memverifikasi file yang mungkin atau mungkin tidak ditandatangani di katalog. Contoh file ini termasuk file atau driver Windows.
/ad Menemukan katalog dengan menggunakan database katalog default.
/agCatDBGUID Menemukan katalog dalam database katalog yang diidentifikasi oleh CatDBGUID.
/all Memverifikasi semua tanda tangan dalam file yang menyertakan beberapa tanda tangan.
/as Menemukan katalog dengan menggunakan database katalog komponen sistem (driver).
/cCatFile Menentukan file katalog berdasarkan nama.
/d Menentukan apakah Sign Tool harus mencetak deskripsi dan URL deskripsi.
/dsIndex Memverifikasi tanda tangan pada posisi tertentu.
/hash (SHA1|SHA256) Menentukan algoritme hash opsional yang akan digunakan saat mencari file dalam katalog.
/kp Menentukan apakah verifikasi harus dilakukan dengan kebijakan penandatanganan driver mode kernel.
/ms Menggunakan beberapa semantik verifikasi. Ini adalah perilaku default dari panggilan WinVerifyTrust pada Windows 8 ke atas.
/oVersion Memverifikasi file berdasarkan versi sistem operasi. Version memiliki bentuk berikut: PlatformID:VerMajor.VerMinor.BuildNumber. PlatformID mewakili nilai yang mendasarinya dari anggota enumerasi PlatformID. Penting: Penggunaan pengalihan /o disarankan. Jika /o tidak ditentukan, SignTool.exe dapat mengembalikan hasil yang tidak terduga. Misalnya, jika Anda tidak menyertakan pengalihan /o, 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. Tanda tangan diperiksa dan rantai dibangun untuk sertifikat penandatanganan.
/pa Menentukan apakah Kebijakan Verifikasi Kode Autentikasi Default harus digunakan. Jika opsi /pa tidak ditentukan, Sign Tool menggunakan Kebijakan Verifikasi Driver Windows. Opsi ini tidak dapat digunakan dengan opsi catdb.
/pgPolicyGUID Menentukan kebijakan verifikasi oleh GUID. PolicyGUID sesuai dengan ActionID dari kebijakan verifikasi. Opsi ini tidak dapat digunakan dengan opsi catdb.
/ph Menentukan bahwa Sign Tool harus mencetak dan memverifikasi nilai hash halaman.
/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 peringatan harus dihasilkan jika tanda tangan tidak diberi stempel waktu.

Untuk contoh penggunaan, lihat Menggunakan SignTool untuk Memverifikasi Tanda Tangan File.

Tampilkan Nilai

Sign Tool mengembalikan salah satu kode keluar berikut saat dihentikan.

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 /u ini menghasilkan nama unik jika perlu untuk mencegah penggantian 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 memberi stempel waktu ke 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

Perintah berikut ini memberi stempel waktu ke file yang telah ditandatangani secara digital.

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

Perintah berikut memberi stempel waktu ke 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 mungkin ditandatangani di 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  

Lihat juga