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.
SignTool tersedia sebagai bagian dari Windows Software Development Kit (SDK). Alat ini diinstal di \Bin
folder jalur penginstalan Windows SDK, misalnya: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe
.
Catatan
Windows SDK, Windows Hardware Lab Kit (HLK), Windows Driver Kit (WDK), dan Windows Assessment and Deployment Kit (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 stempel 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. 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 , , sign timestamp , 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 opsi perintah tanda tangan. |
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 catdb
perintah :
Opsi Catdb | Deskripsi |
---|---|
/d |
Menentukan bahwa database katalog default diperbarui. Jika Anda tidak menggunakan atau /d /g , SignTool memperbarui komponen sistem dan database driver. |
/g GUID |
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 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 sign
perintah :
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. |
/ac arsip |
Menambahkan sertifikat lain dari file ke blok tanda tangan. |
/as |
Menambahkan tanda tangan ini. Jika tidak ada tanda tangan utama, tanda tangan ini akan dijadikan tanda tangan utama sebagai gantinya. |
/c CertTemplateName |
Menentukan Nama Templat Sertifikat (ekstensi Microsoft) untuk sertifikat penandatanganan. |
/csp CSPName |
Menentukan penyedia layanan kriptografi (CSP) yang berisi kontainer kunci privat. |
/d Desc |
Menentukan deskripsi konten yang ditandatangani. |
/dg Jalan |
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 . |
/di Jalan |
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>.<>< |
/dlib DLL |
Menentukan DLL yang mengimplementasikan AuthenticodeDigestSign fungsi untuk menandatangani hash. Opsi ini setara dengan menggunakan SignTool secara terpisah dengan /dg opsi , /ds , dan /di . Opsi ini memanggil ketiganya sebagai satu operasi atom. |
/dmdf Filename |
Saat digunakan dengan /dg opsi , meneruskan 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>.< |
/du URL |
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.<>< |
/f SignCertFile |
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 nama kontainer CSP dan kunci privat. |
/fd alg |
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. |
/i IssuerName |
Menentukan nama penerbit sertifikat penandatanganan. Nilai ini dapat menjadi substring dari seluruh nama penerbit. |
/kc PrivKeyContainerName |
Menentukan nama kontainer kunci privat. |
/n SubjectName |
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. |
/p Kata sandi |
Menentukan kata sandi yang akan digunakan saat membuka file PFX. /f Gunakan opsi untuk menentukan file PFX. |
/p7 Jalan |
Menentukan bahwa file Public Key Cryptography Standards (PKCS) #7 diproduksi untuk setiap file konten yang ditentukan. File PKCS #7 diberi nama path\filename.p7>.<>< |
/p7ce Nilai |
Menentukan opsi untuk konten PKCS #7 yang ditandatangani. Atur Nilai ke Embedded untuk menyematkan konten yang ditandatangani dalam file PKCS #7, atau untuk DetachedSignedData menghasilkan bagian data yang ditandatangani dari file #7 PKCS 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. |
/r RootSubjectName |
Menentukan nama subjek sertifikat akar yang harus ditautkan dengan sertifikat penandatanganan. Nilai ini dapat berupa substring dari seluruh nama subjek sertifikat akar. |
/s StoreName |
Menentukan penyimpanan yang akan dibuka ketika perintah mencari sertifikat. Jika opsi ini tidak ditentukan, perintah akan membuka penyimpanan My . |
/sha1 Hash |
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. |
/t URL |
Menentukan URL server stempel waktu. Jika opsi ini atau /tr tidak ditentukan, file yang ditandatangani tidak diberi stempel waktu. Jika stempel waktu gagal, perintah akan menghasilkan peringatan. Opsi ini tidak dapat digunakan dengan /tr opsi . |
/td alg |
Digunakan dengan opsi /tr untuk meminta algoritma hash yang digunakan oleh server stempel waktu RFC 3161. Catatan: Jika /td tidak ditentukan saat stempel waktu, perintah akan menghasilkan kesalahan. |
/tr URL |
Menentukan URL server stempel waktu RFC 3161. Jika opsi ini atau /t tidak ditentukan, file yang ditandatangani tidak diberi stempel waktu. Jika stempel waktu gagal, perintah akan menghasilkan peringatan. Opsi ini tidak dapat digunakan dengan /t opsi . |
/u Penggunaan |
Menentukan penggunaan kunci yang ditingkatkan (EKU) yang harus ada dalam sertifikat penandatanganan. Nilai penggunaan dapat ditentukan oleh OID atau string. Penggunaan defaultnya 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 timestamp
perintah :
Opsi tanda waktu | Deskripsi |
---|---|
/p7 |
File PKCS #7 stempel waktu. |
/t URL |
Menentukan URL server stempel waktu. File yang diberi stempel waktu harus telah ditandatangani sebelumnya. Opsi /t atau /tr diperlukan. |
/td alg |
Digunakan dengan opsi /tr untuk meminta algoritma hash yang digunakan oleh server stempel waktu RFC 3161. Catatan: Jika /td tidak ditentukan saat stempel waktu, perintah menghasilkan peringatan. |
/tp Indeks |
Memberi stempel waktu tanda tangan pada indeks. |
/tr URL |
Menentukan URL server stempel waktu RFC 3161. File yang diberi stempel waktu harus telah ditandatangani sebelumnya. Opsi /tr atau /t diperlukan. |
Memverifikasi opsi perintah
Tabel berikut ini mencantumkan opsi yang bisa digunakan dengan verify
perintah :
Opsi verify | Deskripsi |
---|---|
/a |
Menentukan apakah semua metode dapat digunakan untuk memverifikasi file. Pertama, SignTool mencari database katalog untuk menentukan apakah file masuk dalam 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). |
/ag CatDBGUID |
Menemukan katalog dalam database katalog yang diidentifikasi oleh GUID. |
/c CatFile |
Menentukan file katalog berdasarkan nama. |
/d |
Mencetak URL deskripsi dan deskripsi. Windows Vista dan yang lebih lama: Opsi ini tidak didukung. |
/ds Indeks |
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 . |
/o Versi |
Memverifikasi file berdasarkan versi sistem operasi. Parameter versi adalah 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 memvalidasi 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 . |
/pg PolicyGUID |
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. |
/r RootSubjectName |
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
.
Nilai hasil
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 stempel waktu 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 masuk ke katalog bernama MyCatalog.cat
.
signtool verify /c MyCatalog.cat SystemFile.dll