Ich versuche, ein Windows 8-AppX-Paket mit einer Pfx-Datei zu signieren, die ich habe. Ich benutze einen Befehl wie folgt:
signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
Und daraus bekomme ich:
SignTool-Fehler: Es wurden keine Zertifikate gefunden, die alle angegebenen Kriterien erfüllen.
Welche "Kriterien" erfülle ich nicht? Dies dient nur zum Testen, es handelt sich also um selbstsignierte Zertifikate. Ich habe versucht, den Schlüssel zu importieren und dann zu signieren, aber es führt immer zum gleichen Fehler. Wie behebe ich das?
Signtool
das versucht, das Zertifikat im vertrauenswürdigen Stammzertifikatspeicher zu finden, und Sie haben dort keine Codesignaturzertifikate.Antworten:
Als dieser Fehler über Visual Studio angezeigt wurde, wurde ein Signaturzertifikat eingerichtet, das dem Computer entspricht, auf dem es ursprünglich entwickelt wurde.
Sie können dies überprüfen, indem Sie auf die Registerkarte Projekteigenschaften> Signieren gehen und die Zertifikatdetails überprüfen.
Sie können das Kontrollkästchen "ClickOnce-Manifeste signieren" deaktivieren, um die Signatur zu deaktivieren.
Wenn Sie diese Option nicht deaktivieren möchten, müssen Sie das Zertifikat installieren.
quelle
Versuchen Sie es mit / debug. 1,2 Wie in:
Es wird Ihnen helfen herauszufinden, was los ist. Sie sollten folgende Ausgabe erhalten:
Sie können sehen, welcher Filter dazu führt, dass Ihr Zertifikat nicht funktioniert oder ob keine Zertifikate berücksichtigt wurden.
Ich habe die Hashes und andere Informationen geändert, aber Sie sollten auf die Idee kommen. Hoffe das hilft.
1 Bitte beachten Sie: Hier
signtool
geht es insbesondere darum, wo die/debug
Option platziert wird. Es muss nach dersign
Aussage gehen.2 Beachten Sie auch: Die
/debug
Option funktioniert nur mit einigen Versionen vonsigntool
. Die WDK-Version bietet die Option, die Windows SDK-Version jedoch nicht.quelle
Bitte überprüfen Sie immer zuerst das Ablaufdatum Ihres Zertifikats, da die meisten Zertifikate ein Ablaufdatum haben. In meinem Fall ist das Zertifikat abgelaufen und ich habe versucht, ein Projekt zu erstellen.
quelle
certutil -dump mycertificate.pfx
. Sehen Sie sich den letzten Eintrag an, da die ersten die Zertifizierungsstelle und nicht Ihr Codesignaturzertifikat sind.Wenn Sie die App nicht signieren müssen, klicken Sie mit der rechten Maustaste auf Ihr Projekt
Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"
Auch wie dieser MS-Artikel vorschlägt,
quelle
Deaktivieren Sie einfach das Kontrollkästchen "Signieren Sie den Klick, sobald er sich manifestiert" auf der Registerkarte "Signieren" in den Projekteigenschaften. Dadurch wird der Fehler behoben und Sie können von dort aus einen neuen erstellen.
quelle
Habe das gleiche Problem, stellte sich heraus, dass der private Schlüssel zum Zertifikat keine Berechtigung hatte.
Um dies zu beheben, öffnen Sie die Zertifikatsverwaltung, suchen Sie Ihr Zertifikat, klicken Sie mit der rechten Maustaste auf -> Private Schlüssel verwalten und stellen Sie dann sicherheitshalber sicher, dass Ihr Benutzer hinzugefügt wurde und Berechtigungen erhalten hat, die es für mich behoben haben.
quelle
In meinem Fall habe ich den falschen Zertifikatstyp, den ich zuordnen möchte.
Ich hatte "Serverauthentifizierung" statt "Codesignatur" .
Sie sollten dies in Certificate Snap im Abschnitt "Verwendungszweck" sehen können.
Danach funktioniert es gut.
quelle
Für den Fall, dass jemand anderes darauf stößt: Mein Problem bestand darin, dass ich die Eingabeaufforderung als Administrator ausführen musste, bevor ich die App signtool.exe verwenden konnte. Dann funktioniert alles wunderbar.
quelle
Ich habe das gleiche Problem in meiner Konsolenanwendungsentwicklung und als schnelle Problemumgehung :
gehe zu
project properties
dann,klicke auf
signing
Registerkarte und deaktivieren Sie "SignO für das ClickOnce-Manifest".Bildbeschreibung:
Zu Ihrer Information Sie können diese weniger als eine Minute dauernde Videolösung auch sehen . Das obige Bild stammt aus dem Video.
quelle
Ich habe dieses Problem gelöst, indem ich mithilfe des
/sm
Flags angegeben habe, dass im Maschinenspeicher gesucht werden soll, anstatt im Standardspeicher, der Mein (lokaler Benutzer) Speicher ist. Es kann auch hilfreich sein, das Debugging für signtool mithilfe von zu aktivieren/debug
.quelle
Ich hatte dieses Problem und bin mir nicht ganz sicher, durch welchen Schritt es funktioniert hat, aber ich hoffe, das hilft jemand anderem ... das habe ich getan:
certmgr.msc
und exportieren Sie es (in dem Speicher, den Sie im ersten Schritt verwendet haben) als pfx-Datei mit privatem Schlüssel und erweiterten Eigenschaften (wahrscheinlich nicht erforderlich).signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
wobei das Kennwort mit dem beim Export angegebenen übereinstimmt
quelle
.crt
Comodo bereitgestellte Datei verwendet, anstatt das Zertifikat zu installieren und die.pfx
Datei dann zu exportieren .Ich habe das gleiche Problem, habe einige Antworten gelesen (hier gepostet) und festgestellt, dass mein Zertifikat abgelaufen ist.
Erstellen Sie einfach ein neues aus meinem Startprojekt. Dann löschte der Zertifikatsmanager das abgelaufene Zertifikat.
Jetzt kompiliert alles gut.
quelle
Zu den Kriterien gehören unter anderem der Kontoname (dessen privater Schlüssel ihm zugeordnet ist), die Domain, das Unternehmen, das Ablaufdatum und die beabsichtigten Zwecke.
Es gibt viele verschiedene mögliche Gründe für diesen Fehler, einige wurden bereits aufgelistet. Hier ist ein weiterer Tipp: Stellen Sie beim Importieren eines Zertifikats sicher, dass Sie mit der Originaldatei arbeiten, die Sie von der Zertifizierungsstelle erhalten haben. Andernfalls gehen möglicherweise einige Eigenschaften verloren.
Beispiel: Vor kurzem habe ich versucht, ein Zertifikat zu importieren, das von einem anderen Konto auf demselben Computer exportiert wurde. Das Zertifikat wurde für mein Konto sichtbar, war jedoch nicht mit meinem Konto verknüpft. Daher wurde
signtool
die Anerkennung verweigert, ohne dass der Dateiname und ein Kennwort explizit angegeben wurden. Was, wenn es als Teil des Erstellungsprozesses ausgeführt und explizit in eine Batch- oder Quelldatei geschrieben wird, möglicherweise nicht ausreichend sicher ist. (Durch Importieren des von der CA ausgestellten Originalzertifikats wurde das Problem behoben.)quelle
Ich hatte die gleiche Nachricht " Nach dem Filter des privaten Schlüssels wurden 0 Zertifikate hinterlassen " und verbrachte zu viel Zeit meines Lebens damit, herauszufinden, was die Nachricht bedeutete.
Das Problem war, dass ich das Zertifikat falsch im Windows-Zertifikatspeicher installiert hatte, sodass dem Codesignaturzertifikat kein privater Schlüssel zugeordnet war.
Was ich hätte tun sollen, war Folgendes:
Senden Sie die Anforderung entweder mit Firefox oder Internet Explorer an den Aussteller. Dadurch wird ein privater Schlüssel generiert, der vom Browser stillschweigend gespeichert wird (in Firefox wird für den Bruchteil einer Sekunde ein Dialogfeld angezeigt). Beachten Sie, dass andere Browser möglicherweise nicht funktionieren: Ihr Leben ist zu kurz, um herauszufinden, ob dies der Fall ist.
Senden Sie die Anfrage, springen Sie durch die Validierungskreise und -schleifen des Emittenten, opfern Sie eine Ziege, beten Sie zu den Göttern, senden Sie eine unterschriebene Erklärung Ihrer Urgroßeltern usw.
Laden Sie das Zertifikat (.crt) herunter und importieren Sie es in denselben Browser . Der Browser verfügt nun sowohl über den privaten Schlüssel als auch über das Zertifikat .
Exportieren Sie das Zertifikat aus dem Browser als .p12-Datei (Personal Information Exchange). Sie werden aufgefordert, ein Kennwort zum Schutz dieser Datei anzugeben.
Bewahren Sie eine Sicherungskopie der .p12-Datei auf.
Führen Sie den Zertifikat-Manager (certmgr.msc) aus, klicken Sie mit der rechten Maustaste auf den Speicher für persönliche Zertifikate, wählen Sie Alle Aufgaben / Importieren ... und importieren Sie die P12-Datei in Windows. Sie werden nach dem Kennwort gefragt, mit dem Sie die Datei geschützt haben. Zu diesem Zeitpunkt können Sie den Schlüssel abhängig von Ihren Sicherheitsanforderungen als exportierbar markieren, um eine Kopie aus dem Windows Store wiederherzustellen. Sie können auch markieren, dass vor der Verwendung ein Kennwort erforderlich ist, wenn Sie Batch-Skripte auflösen möchten.
Führen Sie signtool erfolgreich aus, atmen Sie erleichtert auf und überlegen Sie, wie viel Ihres Lebens Sie aufgrund schlechter Fehlermeldungen und schlechter oder fehlender Dokumentation verschwendet haben.
quelle
Ich habe dieses Problem auch gehabt, viel versucht. Verwendete SDK sowie Visual Studio-Signatur, aber überall wurde "Es wurden keine Zertifikate gefunden, die alle angegebenen Kriterien erfüllten".
Lösung: Beachten Sie, dass, wenn "nach dem Filter des privaten Schlüssels": '0 left' mit der Option signtool sign / debug ... angezeigt wird, die Ursache dafür ist, dass Ihr PC die Zertifizierungsstelle selbst nicht im Speicher hat. Um dies zu beheben, installieren Sie zuerst die Zertifizierungsstelle (in meinem Fall eine CRT-Datei) und führen Sie dann das Zeichen erneut aus. Es sollte jetzt funktionieren!
Signtool kann nur mit einer Zertifizierungsstelle verwendet werden, die angefordert wird und demselben PC gehört.
quelle
Mein Problem war schließlich, dass ich die Signtool-Optionen nicht verstand. Ich hatte die Option / n mit etwas versehen, das nicht zu meinem Zertifikat passte. Als ich das entfernte, hörte es auf, sich zu beschweren.
quelle
Ich hatte ein ähnliches Problem, mein Computername hatte sich geändert und das Zertifikat war abgelaufen. Ich konnte dieses Problem beheben, indem ich ein neues Testzertifikat erstellte.
Klicken Sie in Visual Studio im Solution Explorer mit der rechten Maustaste auf Projekt. Eigenschaften auswählen. Wählen Sie das Fenster Anmelden in den Eigenschaften. Klicken Sie auf "Testzertifikat erstellen ....". Geben Sie die Kennwortinformationen für das Testzertifikat ein und klicken Sie auf OK.
quelle
Wenn Sie mit / debug die Meldung "Nach dem Filter für private Schlüssel wurden 0 Zertifikate übrig." Erhalten, kann ein Grund dafür sein, dass die pfx-Datei nicht über den privaten Schlüssel verfügt. Stellen Sie beim Exportieren des installierten Zertifikats in die pfx-Datei sicher, dass das Kontrollkästchen auch den privaten Schlüssel enthält.
quelle
Gehen Sie zu
project properties
und deaktivieren Sie alle Felder,Firm
bevor Sie die Kompilierung startenquelle