Kesalahan Signtool: Tidak ditemukan sertifikat yang memenuhi semua kriteria yang diberikan dengan Aplikasi Windows Store?

294

Saya mencoba menandatangani paket appx Windows 8 dengan file pfx yang saya miliki. Saya menggunakan perintah seperti ini:

signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"

Dan dari ini, saya mendapatkan:

Kesalahan SignTool: Tidak ada sertifikat yang memenuhi semua kriteria yang diberikan.

"Kriteria" apa yang tidak saya penuhi? Ini hanya untuk pengujian sehingga ini adalah sertifikat yang ditandatangani sendiri. Saya sudah mencoba mengimpor kunci dan kemudian menandatanganinya, tetapi selalu menghasilkan kesalahan yang sama. Bagaimana cara saya memperbaikinya?

Earlz
sumber
Saya pikir itu Signtoolsedang mencoba menemukan sertifikat di toko sertifikat akar tepercaya dan Anda tidak memiliki sertifikat penandatanganan kode di sana.
crea7atau
15
Saya memiliki kesalahan ini karena sertifikat yang digunakan untuk penandatanganan telah kedaluwarsa
Mark Homer
1
Saya memiliki masalah serupa dan memposting jawaban di sini. Semoga ini membantu.
SurenSukauka

Jawaban:

590

Ketika mendapatkan kesalahan ini melalui Visual Studio itu karena ada pengaturan sertifikat penandatanganan yang cocok dengan komputer itu pada awalnya dikembangkan.

Anda dapat memeriksa ini dengan masuk ke properti proyek> tab penandatanganan dan memeriksa detail sertifikat.

Anda dapat menghapus centang "Tandatangani manifes ClickOnce" untuk menonaktifkan penandatanganan.

Menandatangani Properti

Jika Anda tidak ingin mematikan opsi ini, Anda harus menginstal sertifikat.

JDandChips
sumber
12
Hanya untuk menambahkan apa yang disarankan @JDandChips: Untuk tujuan debugging dan pengujian Anda juga dapat menggunakan sertifikat pengujian sementara dengan mengklik tombol 'Buat Sertifikat Tes' yang ditunjukkan pada tangkapan layar di atas.
nam
Apa maksudmu "pasang sertifikat"?
Sean Kendle
Dalam situasi saya, sertifikat tersedia dari mesin yang awalnya dikembangkan, jadi saya bisa memilih "Pilih dari File ..." untuk menginstal sertifikat yang hilang. Atau Anda selalu dapat membuat yang baru dan menggunakannya!
JDandChips
@ JDandChips Bagaimana Anda membuat sertifikat baru?
erotavlas
3
Untuk pemula VS. Pastikan Anda mengklik kanan pada proyek, bukan solusinya, karena itu akan memunculkan menu yang sama sekali berbeda!
B5A7
109

Coba dengan / debug. 1,2 Seperti dalam:

signtool sign /debug /f mypfxfile.pfx /p <password> (mydllexectuable).exe

Ini akan membantu Anda mengetahui apa yang sedang terjadi. Anda harus mendapatkan output seperti ini:

The following certificates were considered:
    Issued to: <issuer>
    Issued by: <certificate authority> Class 2 Primary Intermediate Server CA
    Expires:   Sun Mar 01 14:18:23 2015
    SHA1 hash: DD0000000000000000000000000000000000D93E

    Issued to: <certificate authority> Certification Authority
    Issued by: <certificate authority> Certification Authority
    Expires:   Wed Sep 17 12:46:36 2036
    SHA1 hash: 3E0000000000000000000000000000000000000F

After EKU filter, 2 certs were left.
After expiry filter, 2 certs were left.
After Private Key filter, 0 certs were left.
SignTool Error: No certificates were found that met all the given criteria.

Anda dapat melihat filter apa yang menyebabkan sertifikat Anda tidak berfungsi, atau jika tidak ada sertifikat yang dipertimbangkan.

Saya mengubah hash dan info lainnya, tetapi Anda harus mendapatkan ide. Semoga ini membantu.


1 Harap dicatat: signtoolkhusus tentang di mana /debugopsi ditempatkan. Perlu mengikuti signpernyataan itu.
2 Perhatikan juga: /debugopsi hanya berfungsi pada beberapa versi signtool. Versi WDK memiliki opsi, sedangkan versi Windows SDK tidak.

Daniel
sumber
3
Bekerja untukku. Bukannya saya mengerti respon dari signtool, tapi / debug melakukan apa yang seharusnya. Suara positif!
noelicus
1
Perintah ini khusus di mana Anda meletakkan / debug Jika Anda membuatnya rusak, itu akan melaporkan kesalahan.
Daniel
12
/ debug hanya berfungsi untuk versi spesifik dari signtool.exe. Yang datang dengan WDK menyediakan opsi ini, yang dari Windows SDK tidak.
Paul Kertscher
3
Juga, / debug harus dilakukan setelah tanda signtool, bukan di antaranya.
Denis V
Menunjukkan bahwa sertifikat saya kedaluwarsa. Kerja bagus.
avantprime
36

Harap selalu periksa tanggal kedaluwarsa sertifikat Anda terlebih dahulu karena sebagian besar sertifikat memiliki tanggal kedaluwarsa. Dalam kasus saya, sertifikat telah kedaluwarsa dan saya mencoba membangun proyek.

jagoan
sumber
2
Untuk memeriksa kedaluwarsa sertifikat, buka baris perintah, navigasikan ke tempat sertifikat Anda, lalu masukkan certutil -dump mycertificate.pfx. Lihatlah entri terakhir karena yang pertama adalah CA, bukan sertifikat penandatanganan kode Anda.
Hoki
23

Jika Anda tidak harus menandatangani aplikasi, klik kanan pada proyek Anda

Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"

Juga sebagai ini artikel MS menyarankan,

Jika Anda menggunakan Visual Studio 2008 dan menargetkan .NET 3.5 dan menggunakan pembaruan otomatis, Anda bisa mengubah sertifikat dan menggunakan versi baru,

nPcomp
sumber
1
Anda juga dapat mengklik buat sertifikat uji untuk melanjutkan. terima kasih
MindRoasterMir
16

cukup hapus centang pada 'Masuk klik sekali manifes' dari tab penandatanganan di properti proyek, itu akan menghapus kesalahan dan Anda dapat membuat yang baru dari sana.

Sourav Sharma
sumber
15

Mendapat masalah yang sama, ternyata kunci pribadi ke sertifikat tidak memiliki izin.
Untuk memperbaiki - membuka manajemen sertifikat, temukan sertifikat Anda, klik kanan -> Kelola Kunci Pribadi dan kemudian di keamanan di atas pastikan bahwa pengguna Anda ditambahkan dan diberikan izin, yang memperbaikinya untuk saya.

pengguna3740240
sumber
15

Dalam kasus saya, saya memiliki tipe sertifikat yang salah yang saya coba kaitkan.
Saya memiliki "Otentikasi Server" daripada "Penandatanganan kode" .
Anda harus dapat melihatnya di snap Sertifikat di bagian Tujuan yang Dituju.
Setelah itu, itu berfungsi dengan baik.

maridob
sumber
1
Ya, yaitu, saya berjuang selama 2 hari mencari jawaban ini.
Hakan Fıstık
14

Jika ada orang lain yang mengalami hal ini: Masalah saya adalah saya harus menjalankan command prompt sebagai administrator sebelum menggunakan aplikasi signtool.exe. Kemudian semuanya bekerja dengan luar biasa.

Dave
sumber
11
Tidak membantu dalam kasus saya.
bgplaya
1
Saya menjalankan signtool dari VS2015 sebagai skrip, dan saya menghadapi masalah yang sama. Saya menjalankan VS2015 sebagai administrator dan signtool dapat menandatangani file saya>
hamaney
10

Saya mendapat masalah yang sama dalam pengembangan aplikasi konsol saya dan sebagai solusi cepat ,

pergi ke sana project properties,

klik pada signingtab dan hapus centang "Tandatangani Manifest ClickOnce".

Uraian gambar; kesan:

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

FYI Anda juga dapat melihat solusi video kurang satu menit ini . Gambar di atas diambil dari video.

Muhammad Faizan Khan
sumber
1
Anda juga dapat mengklik buat sertifikat uji untuk melanjutkan. terima kasih
MindRoasterMir
9

Saya memecahkan ini dengan menggunakan /smflag untuk menentukan untuk melihat di toko mesin, bukan default, yaitu toko (Pengguna Lokal) saya. Juga, ini bisa membantu untuk mengaktifkan debug untuk signtool dengan menggunakan /debug.

jle
sumber
8

Saya punya masalah ini dan saya tidak sepenuhnya yakin langkah mana di bawah ini yang berhasil, tetapi harap ini membantu orang lain ... inilah yang saya lakukan:

  • Instal sertifikat yang diunduh (.crt) ke dalam sertifikat (saya masukkan ke toko "pribadi") - klik kanan pada file .crt dan klik Instal Sertifikat .
  • Jalankan certmgr.mscdan ekspor sertifikat (ditemukan di toko mana pun yang Anda gunakan pada langkah 1) sebagai file pfx termasuk kunci pribadi, dan properti yang diperluas (mungkin tidak perlu)
  • Gunakan file .pfx yang diekspor saat menandatangani proyek Anda
  • Contoh signtool: di signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
    mana kata sandi sama dengan yang disediakan selama Ekspor
Noelicus
sumber
1
Terima kasih, ini berhasil. Saya menggunakan .crtfile yang disediakan Comodo alih-alih menginstal sertifikat dan kemudian mengekspor .pfxfile.
Joshua Pinter
1
Terima kasih banyak!
Bruno Soares
6

Saya mengalami masalah yang sama, membaca beberapa jawaban (diposting di sini), saya melihat sertifikat saya kedaluwarsa.

Cukup buat yang baru dari proyek awal saya. Kemudian pada manajer sertifikat menghapus sertifikat kadaluarsa.

Sekarang semuanya terkompilasi dengan baik.

Juan Pablo Gomez
sumber
5

Kriteria tersebut meliputi nama akun (yang terkait dengan kunci privatnya), domain, perusahaan, tanggal kedaluwarsa, tujuan yang dimaksudkan, antara lain.

Ada banyak alasan yang memungkinkan untuk terjadinya kesalahan ini, beberapa telah terdaftar. Berikut ini tip lain: Saat mengimpor sertifikat, pastikan Anda bekerja dengan file asli yang diterima dari otoritas sertifikat (CA) , atau beberapa properti mungkin hilang.

Contoh: baru-baru ini saya mencoba mengimpor sertifikat yang diekspor dari akun yang berbeda di mesin yang sama. Sertifikat menjadi terlihat oleh akun saya tetapi tidak dikaitkan dengan akun saya, dan akibatnya signtoolmenolak untuk mengenalinya tanpa secara eksplisit memberikan nama file dan kata sandi. Yang, ketika dilakukan sebagai bagian dari proses build dan ditulis secara eksplisit dalam file batch atau file sumber, mungkin tidak cukup aman. (Mengimpor sertifikat yang dikeluarkan CA asli menyelesaikannya.)

Simon Hawkin
sumber
4

Saya memiliki pesan " Setelah Private Key filter, 0 sertifikat tersisa " yang sama dan menghabiskan terlalu banyak waktu dalam hidup saya untuk mencari tahu apa arti pesan itu.

Masalahnya adalah bahwa saya telah menginstal sertifikat secara tidak benar di toko Sertifikat Windows sehingga tidak ada kunci pribadi yang terkait dengan sertifikat penandatanganan kode.

Apa yang seharusnya saya lakukan adalah ini:

  1. Baik menggunakan Firefox atau Internet Explorer, kirim permintaan ke penerbit. Ini menghasilkan KUNCI PRIVATE yang disimpan secara diam-diam oleh browser (sebuah dialog muncul selama sepersekian detik di Firefox). Perhatikan bahwa peramban lain mungkin tidak berfungsi: hidup Anda terlalu pendek untuk mengetahui apakah itu benar.

  2. Kirimkan permintaan, lompati loop dan loop validasi penerbit, korbankan seekor kambing, berdoa kepada para dewa, kirimkan pernyataan yang ditandatangani dari kakek-nenek buyut Anda, dll.

  3. Unduh sertifikat (.crt) dan impor ke browser yang sama . Browser sekarang memiliki kunci pribadi dan sertifikat .

  4. Ekspor sertifikat dari browser sebagai file Personal Information Exchange (.p12). Anda akan diminta memberikan kata sandi untuk melindungi file ini.

  5. Simpan salinan cadangan dari file .p12.

  6. Jalankan Manajer Sertifikat (certmgr.msc), klik kanan pada toko sertifikat Pribadi , pilih Semua Tugas / Impor ... dan impor file .p12 ke Windows. Anda akan dimintai kata sandi yang Anda gunakan untuk melindungi file. Pada titik ini, tergantung pada persyaratan keamanan Anda, Anda dapat menandai kunci sebagai ekspor sehingga Anda dapat mengembalikan salinan dari toko Windows. Anda juga dapat menandai bahwa kata sandi diperlukan sebelum digunakan jika Anda ingin memecah skrip batch.

  7. Jalankan signtool dengan sukses, tarik nafas lega, dan renungkan berapa banyak hidup Anda yang telah Anda buang karena pesan kesalahan yang buruk dan dokumentasi yang buruk atau hilang.

MZB
sumber
2

Saya juga pernah mengalami masalah ini, sudah mencoba banyak. Digunakan SDK serta penandatanganan Visual Studio, tetapi di mana-mana saya mendapat "Tidak ada sertifikat yang memenuhi semua kriteria yang diberikan".

Solusi: Perlu diketahui bahwa, jika "setelah filter kunci pribadi": '0 kiri' muncul dengan opsi signtool sign / debug ..., penyebabnya adalah PC Anda tidak memiliki CA sendiri di toko. Untuk mengatasi ini, instal CA terlebih dahulu (dalam kasus saya file .crt), kemudian jalankan tandanya lagi. Ini seharusnya berfungsi sekarang!

Signtool hanya dapat digunakan dengan CA yang diminta dan dimiliki oleh PC yang sama.

John Schellingerhout
sumber
Saya tidak punya masalah menggunakan signtool dengan CA yang berasal dari PC lain.
bparker
2

Masalah saya akhirnya adalah bahwa saya tidak mengerti opsi signtool. Saya telah memberikan opsi / n dengan sesuatu yang tidak cocok dengan sertifikat saya. Ketika saya dihapus itu berhenti mengeluh.

Silwing
sumber
2

Saya memiliki masalah yang sama dengan nama komputer saya yang berubah dan sertifikat telah kedaluwarsa. Saya dapat menyelesaikan masalah ini dengan membuat sertifikat uji baru.

Di Visual Studio, klik kanan pada proyek di penjelajah solusi. Pilih properti. Pilih jendela Properti masuk. Klik "Buat Sertifikat Tes ....". Masukkan informasi kata sandi untuk sertifikat uji dan klik ok.

nate_weldon
sumber
2

Dengan / debug, ketika Anda menerima pesan ini "Setelah filter Kunci Pribadi, 0 sertifikat tersisa.", Salah satu alasannya mungkin karena file pfx tidak memiliki kunci pribadi. Ketika Anda mengekspor sertifikat yang diinstal ke file pfx memastikan untuk mengaktifkan kotak centang untuk juga memasukkan kunci pribadi.

Prabhakaran Rajagopal
sumber
1

Pergi ke project propertiesdan hapus centang semua bidang dari Firmsebelum init kompilasi

ionsofa
sumber