Masalah umum dan pemecahan masalah untuk SignTool

Jenis kesalahan yang paling umum saat menggunakan SignTool adalah internal dan biasanya terlihat seperti ini:

SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B) 

Jika kode kesalahan dimulai dengan 0x8008, seperti 0x80080206 (APPX_E_CORRUPT_CONTENT), paket yang sedang ditandatangani tidak valid. Jika Anda mendapatkan jenis kesalahan ini, Anda harus membangun kembali paket dan menjalankan SignTool lagi.

SignTool memiliki opsi debug yang tersedia untuk menampilkan kesalahan dan pemfilteran sertifikat. Untuk menggunakan fitur penelusuran kesalahan, tempatkan /debug opsi langsung setelah sign, diikuti dengan perintah SignTool lengkap.

SignTool sign /debug [options]

Kesalahan yang lebih umum adalah 0x8007000B. Untuk jenis kesalahan ini, Anda dapat menemukan informasi lebih lanjut di log peristiwa.

Untuk menemukan informasi selengkapnya di log peristiwa:

  • Jalankan Eventvwr.msc
  • Buka log peristiwa: Pemantau Peristiwa (Lokal) -> Log Aplikasi dan Layanan -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operational
  • Menemukan peristiwa kesalahan terbaru

Kesalahan internal 0x8007000B biasanya sesuai dengan salah satu nilai ini:

ID Peristiwa Contoh string peristiwa Saran
150 error 0x8007000B: Nama penerbit manifes aplikasi (CN=Contoso) harus cocok dengan nama subjek sertifikat penandatanganan (CN=Contoso, C=US). Nama penerbit manifes aplikasi harus sama persis dengan nama subjek penandatanganan.
151 kesalahan 0x8007000B: Metode hash tanda tangan yang ditentukan (SHA512) harus cocok dengan metode hash yang digunakan dalam peta blok paket aplikasi (SHA256). HashAlgorithm yang ditentukan dalam parameter /fd salah. Jalankan ulang SignTool menggunakan hashAlgorithm yang cocok dengan peta blok paket aplikasi (digunakan untuk membuat paket aplikasi)
152 kesalahan 0x8007000B: Konten paket aplikasi harus memvalidasi terhadap peta bloknya. Paket aplikasi rusak dan perlu dibangun kembali untuk menghasilkan peta blok baru. Untuk informasi selengkapnya tentang membuat paket aplikasi, lihat Membuat paket aplikasi dengan alat MakeAppx.exe

Kesalahan umum lainnya adalah 0x80080057. Anda mungkin mengalami masalah berikut saat mencoba menandatangani file Portable Executable (PE) dengan menggunakan alat SignTool di Windows:

  • Gagal menandatangani file PE yang berukuran 4 gigabyte (GB) atau lebih besar. Saat mencoba menandatangani, Anda menerima pesan kesalahan "parameter tidak valid (0x80080057)".

  • Untuk file yang lebih besar dari 4 GB, hash yang dihasilkan mungkin tidak akurat meskipun SignTool mungkin berhasil menandatangani file.

    Catatan

    Ini terutama berlaku untuk file .cat.

Masalah ini terjadi untuk file PE seperti .exe, .sys, dan sebagainya. Masalah ini terjadi karena variabel ULONG di header PE yang menentukan ukuran gambar. (Ukuran gambar adalah 2 GB untuk sistem operasi tingkat bawah, seperti Vista dan versi yang lebih lama.) Ini adalah batasan desain sejak 1996. Batas maksimum untuk nilai ini adalah 4 GB untuk file PE, seperti .exe dan .sys. Meskipun file .cat biasanya dapat ditandatangani, hash internal yang dihasilkan mungkin tidak akurat.

Untuk mengatasi masalah ini, pastikan bahwa file PE apa pun yang Anda coba tanda tangani kurang dari 4 GB. Karena risiko kompatibilitas mundur, backport maupun perbaikan permanen saat ini tidak dimungkinkan. Namun, masalah ini sedang diselidiki.

Catatan

Masalah ini tidak spesifik untuk SignTool. Desain header PE dibatasi hingga 4 GB untuk Windows 7 dan versi Windows yang lebih baru, terlepas dari alat mana yang digunakan.

Pertanyaan yang sering diajukan (FAQ)

T1: Berapa batas ukuran file resmi saat ini untuk tanda tangan digital (dan tanda tangan penghitung stempel waktu) pada Windows?

A1: Untuk file PE seperti .exe dan .sys, ukuran file maksimum untuk penandatanganan adalah 4 GB.

T2: Apakah ada versi Windows tertentu, seperti Windows Server 2016, yang memiliki kemampuan paling besar untuk menandatangani file besar?

A2: Tidak, masalah ini memengaruhi semua versi Windows.

Q3: Apakah Signtool versi 64-bit memiliki dukungan yang lebih baik untuk fungsionalitas ini daripada versi 32-bit?

A: Tidak, SignTool versi 64-bit menggunakan nilai yang sama dengan versi 32-bit. Oleh karena itu, masalah ini tetap dalam 64-bit.

Q4: Apakah pelanggan yang menggunakan versi 32-bit Windows berpotensi mengalami masalah jika mereka mencoba menggunakan file yang ditandatangani dengan menggunakan SignTool versi 64-bit?

J: Tidak. Namun, batasan akan tetap ada terlepas dari versi SignTool mana yang digunakan.

T5: Haruskah kita menggunakan alat atau metode penandatanganan yang berbeda sama sekali?

A: Saat ini kami tidak memiliki metode alternatif untuk penandatanganan digital.