Próbuję podpisać pakiet aplikacji systemu Windows 8 za pomocą pliku pfx, który mam. Używam polecenia takiego:
signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"
I z tego otrzymuję:
Błąd SignTool: Nie znaleziono certyfikatów spełniających wszystkie podane kryteria.
Jakie „kryteria” nie spełniam? To jest tylko do testowania, więc są to certyfikaty z podpisem własnym. Próbowałem zaimportować klucz, a następnie go podpisać, ale zawsze powoduje to ten sam błąd. Jak to naprawić?
Signtool
to próbuje znaleźć certyfikat w zaufanym magazynie certyfikatów głównych i nie ma tam certyfikatów do podpisywania kodu.Odpowiedzi:
Podczas otrzymywania tego błędu za pośrednictwem programu Visual Studio było to spowodowane tym, że konfiguracja certyfikatu do podpisywania była zgodna z komputerem, na którym został pierwotnie opracowany.
Możesz to sprawdzić, przechodząc do właściwości projektu> karty podpisywania i sprawdzając szczegóły certyfikatu.
Możesz odznaczyć „Podpisz manifesty ClickOnce”, aby wyłączyć podpisywanie.
Jeśli nie chcesz wyłączać tej opcji, będziesz musiał zainstalować certyfikat.
źródło
Spróbuj z / debugowania. 1,2 Jak w:
Pomoże Ci dowiedzieć się, co się dzieje. Powinieneś otrzymać wynik w następujący sposób:
Możesz zobaczyć, który filtr powoduje, że twój certyfikat nie działa lub jeśli nie wzięto pod uwagę żadnych certyfikatów.
Zmieniłem skróty i inne informacje, ale powinieneś o tym pomyśleć. Mam nadzieję że to pomoże.
1 Uwaga:
signtool
dotyczy w szczególności miejsca, w którym/debug
umieszczona jest opcja. Musi iść posign
oświadczeniu.2 Uwaga: ta
/debug
opcja działa tylko z niektórymi wersjamisigntool
. Wersja WDK ma opcję, podczas gdy wersja Windows SDK nie.źródło
Zawsze najpierw sprawdź datę ważności certyfikatu, ponieważ większość certyfikatów ma datę ważności. W moim przypadku certyfikat wygasł i próbowałem zbudować projekt.
źródło
certutil -dump mycertificate.pfx
. Spójrz na ostatni wpis, ponieważ pierwsze to urząd certyfikacji, a nie certyfikat podpisu kodu.Jeśli nie musisz podpisywać aplikacji, kliknij projekt prawym przyciskiem myszy
Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"
Również, jak sugeruje ten artykuł MS,
źródło
po prostu usuń zaznaczenie opcji „Podpisz raz manifest” na karcie podpisywania we właściwościach projektu, usunie to błąd i od tego momentu możesz utworzyć nowy.
źródło
Masz ten sam problem, okazało się, że klucz prywatny do certyfikatu nie miał pozwolenia.
Aby to naprawić - otwórz zarządzanie certyfikatem, znajdź swój certyfikat, kliknij prawym przyciskiem myszy -> Zarządzaj kluczami prywatnymi, a następnie w zabezpieczeniach na górze upewnij się, że użytkownik został dodany i ma uprawnienia, które go naprawiły.
źródło
W moim przypadku mam niewłaściwy typ certyfikatu, który próbuję powiązać.
Miałem „Uwierzytelnianie serwera” zamiast „Podpisywanie kodu” .
Powinieneś być w stanie to zobaczyć w przystawce Certyfikat w sekcji Zamierzone przeznaczenie.
Potem po prostu działa dobrze.
źródło
W przypadku, gdy ktoś inny na to wpadnie: Moim problemem było to, że musiałem uruchomić wiersz polecenia jako administrator przed użyciem aplikacji signtool.exe. Wtedy wszystko działa cudownie.
źródło
Ten sam problem mam przy tworzeniu aplikacji konsolowych i jako szybkie obejście problemu ,
przejdź do
project properties
czasu,kliknij
signing
kartę i odznacz „Podpisz Manifest ClickOnce”.Opis obrazu:
FYI Możesz także zobaczyć to rozwiązanie wideo trwające mniej niż minutę . Powyższe zdjęcie pochodzi z filmu.
źródło
Rozwiązałem ten problem, używając
/sm
flagi, aby określić, aby szukać w sklepie maszyny zamiast domyślnego, którym jest sklep Mój (użytkownik lokalny). Może także pomóc włączyć debugowanie dla signtool przy użyciu/debug
.źródło
Miałem ten problem i nie jestem do końca pewien, który krok poniżej sprawił, że zadziałał, ale mam nadzieję, że pomoże to komuś innemu ... oto co zrobiłem:
certmgr.msc
i wyeksportuj certyfikat (znaleziony w dowolnym sklepie, którego użyłeś w pierwszym kroku) jako plik pfx zawierający klucz prywatny i rozszerzone właściwości (prawdopodobnie niepotrzebne)signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
gdzie hasło jest takie samo, jak podane podczas eksportu
źródło
.crt
pliku dostarczonego przez Comodo zamiast instalować certyfikat, a następnie wyeksportować.pfx
plik.Mam ten sam problem, czytając niektóre odpowiedzi (zamieszczone tutaj), widziałem, że mój certyfikat wygasł.
Po prostu stwórz nowy z mojego początkowego projektu. Następnie menedżer certyfikatów usunął wygasły certyfikat.
Teraz wszystko się kompiluje.
źródło
Kryteria obejmują między innymi nazwę konta (z którym powiązany jest klucz prywatny), domenę, firmę, datę ważności, zamierzone cele.
Istnieje wiele różnych możliwych przyczyn tego błędu, niektóre zostały już wymienione. Oto kolejna wskazówka: podczas importowania certyfikatu upewnij się, że pracujesz z oryginalnym plikiem otrzymanym od urzędu certyfikacji , w przeciwnym razie niektóre właściwości mogą zostać utracone.
Przykład: ostatnio próbowałem zaimportować certyfikat wyeksportowany z innego konta na tym samym komputerze. Certyfikat stał się widoczny dla mojego konta, ale nie został powiązany z moim kontem, w wyniku czego
signtool
odmówił jego rozpoznania bez wyraźnego podania nazwy pliku i hasła. Które, wykonane w ramach procesu kompilacji i zapisane bezpośrednio w pliku wsadowym lub źródłowym, mogą nie być wystarczająco bezpieczne. (Importowanie oryginalnego certyfikatu wydanego przez urząd certyfikacji rozwiązało go).źródło
Miałem ten sam komunikat „ Po filtrze klucza prywatnego pozostało 0 certyfikatów ” i spędziłem zbyt wiele życia próbując zrozumieć, co oznacza ta wiadomość.
Problem polegał na tym, że nieprawidłowo zainstalowałem certyfikat w magazynie certyfikatów systemu Windows, więc nie było klucza prywatnego powiązanego z certyfikatem podpisującym kod.
Powinienem był to zrobić:
Korzystając z przeglądarki Firefox lub Internet Explorer, prześlij żądanie do wystawcy. To generuje PRYWATNY KLUCZ, który jest cicho przechowywany przez przeglądarkę (okno dialogowe ukazuje się na ułamek sekundy w przeglądarce Firefox). Pamiętaj, że inne przeglądarki mogą nie działać: Twoje życie jest zbyt krótkie, aby dowiedzieć się, czy tak.
Prześlij prośbę, przejrzyj obręcze i pętle zatwierdzające emitenta, poświęć kozę, módl się do bogów, złóż podpisane oświadczenie od swoich pradziadków itp.
Pobierz certyfikat (.crt) i zaimportuj go do tej samej przeglądarki . Przeglądarka ma teraz zarówno klucz prywatny, jak i certyfikat .
Wyeksportuj certyfikat z przeglądarki jako plik wymiany informacji osobistych (.p12). Zostaniesz poproszony o podanie hasła w celu ochrony tego pliku.
Zachowaj kopię zapasową pliku .p12.
Uruchom Menedżera certyfikatów (certmgr.msc), kliknij prawym przyciskiem myszy Osobisty magazyn certyfikatów, wybierz Wszystkie zadania / Importuj ... i zaimportuj plik .p12 do systemu Windows. Zostaniesz poproszony o podanie hasła użytego do ochrony pliku. W tym momencie, w zależności od wymagań bezpieczeństwa, możesz oznaczyć klucz jako eksportowalny, aby móc przywrócić kopię ze sklepu Windows. Możesz także zaznaczyć, że hasło jest wymagane przed użyciem, jeśli chcesz złamać skrypty wsadowe.
Uruchom signtool z powodzeniem, odetchnij z ulgą i zastanów się, ile życia zmarnowałeś z powodu złych komunikatów o błędach oraz złej lub brakującej dokumentacji.
źródło
Też miałem ten problem, dużo próbowałem. Użyłem SDK oraz podpisywania w Visual Studio, ale wszędzie dostałem „Nie znaleziono certyfikatów spełniających wszystkie podane kryteria”.
Rozwiązanie: Należy pamiętać, że jeśli „po filtrze klucza prywatnego”: „0 pozostało” pojawia się z opcją signtool sign / debug ..., przyczyną jest to, że na twoim komputerze nie ma samego urzędu certyfikacji w sklepie. Aby rozwiązać ten problem, najpierw zainstaluj urząd certyfikacji (w moim przypadku plik .crt), a następnie ponownie uruchom znak. Powinno już działać!
Signtool może być używany tylko z urzędem certyfikacji, który jest wymagany i jest własnością tego samego komputera.
źródło
Mój problem polegał na tym, że nie rozumiałem opcji signtool. Podałem opcję / n czegoś, co nie pasuje do mojego certyfikatu. Kiedy usunąłem, przestało narzekać.
źródło
Miałem podobny problem, zmieniła się nazwa mojego komputera i certyfikat wygasł. Udało mi się rozwiązać ten problem, tworząc nowy certyfikat testowy.
W Visual Studio kliknij prawym przyciskiem myszy projekt w eksploratorze rozwiązań. Wybierz właściwości. Wybierz opcję Podpisywanie w oknie właściwości. Kliknij „Utwórz certyfikat testowy ....”. Wprowadź informacje dotyczące hasła do certyfikatu testowego i kliknij OK.
źródło
W przypadku / debug, gdy pojawia się komunikat „Po filtrze klucza prywatnego pozostało 0 certyfikatów.”, Jednym z powodów może być to, że plik pfx nie ma klucza prywatnego. Podczas eksportowania zainstalowanego certyfikatu do pliku pfx upewnij się, że pole wyboru zawiera również klucz prywatny.
źródło
Przejdź do
project properties
i usuń zaznaczenie wszystkich pól zFirm
przed rozpoczęciem kompilacjiźródło