Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Najczęstsze typy błędów podczas korzystania z narzędzia SignTool są wewnętrzne i zwykle wyglądają mniej więcej tak:
SignTool Error: An unexpected internal error has occurred.
Error information: "Error: SignerSign() failed." (-2147024885 / 0x8007000B)
Jeśli kod błędu rozpoczyna się od 0x8008, na przykład 0x80080206 (APPX_E_CORRUPT_CONTENT), podpisany pakiet jest nieprawidłowy. Jeśli wystąpi ten typ błędu, należy ponownie skompilować pakiet i ponownie uruchomić narzędzie SignTool .
Narzędzie SignTool ma dostępną opcję debugowania, aby wyświetlić błędy certyfikatu i filtrowanie. Aby użyć funkcji debugowania, umieść /debug opcję bezpośrednio po sign, a następnie pełne polecenie SignTool .
SignTool sign /debug [options]
Bardziej typowym błędem jest 0x8007000B. W przypadku tego typu błędu można znaleźć więcej informacji w dzienniku zdarzeń.
Aby znaleźć więcej informacji w dzienniku zdarzeń:
- Uruchom plik Eventvwr.msc
- Otwórz dziennik zdarzeń: Podgląd zdarzeń (lokalny) -> Dzienniki aplikacji i usług -> Microsoft -> Windows -> AppxPackagingOM -> Microsoft-Windows-AppxPackaging/Operational
- Znajdowanie ostatniego zdarzenia błędu
Błąd wewnętrzny 0x8007000B zwykle odpowiada jednej z następujących wartości:
| Identyfikator zdarzenia | Przykładowy ciąg zdarzenia | Sugestia |
|---|---|---|
| 150 | błąd 0x8007000B: Nazwa wydawcy manifestu aplikacji (CN=Contoso) musi być zgodna z nazwą podmiotu certyfikatu podpisywania (CN=Contoso, C=US). | Nazwa wydawcy manifestu aplikacji musi dokładnie odpowiadać nazwie podmiotu podpisywania. |
| 151 | błąd 0x8007000B: Określona metoda skrótu podpisu (SHA512) musi być zgodna z metodą skrótu używaną w mapie bloku pakietu aplikacji (SHA256). | HashAlgorithm określony w /fd parametru jest niepoprawny. Uruchom ponownie SignTool przy użyciu hashAlgorithm zgodnego z mapą bloków pakietu aplikacji (używanego do tworzenia tego pakietu). |
| 152 | błąd 0x8007000B: zawartość pakietu aplikacji musi zostać potwierdzona zgodnie z mapą bloków. | Pakiet aplikacji jest uszkodzony i należy go ponownie skompilować, aby wygenerować nową mapę bloków. Aby uzyskać więcej informacji na temat tworzenia pakietu aplikacji, zobacz Tworzenie pakietu aplikacji za pomocą narzędzia MakeAppx.exe |
Innym typowym błędem jest 0x80080057. Podczas próby podpisania pliku PE mogą wystąpić następujące problemy przy użyciu narzędzia SignTool w systemie Windows:
Nie można podpisać pliku PE o rozmiarze 4 gigabajtów (GB) lub większym. Podczas próby podpisania zostanie wyświetlony komunikat o błędzie "nieprawidłowy parametr (0x80080057)".
W przypadku plików większych niż 4 GB wygenerowany skrót może nie być dokładny, mimo że narzędzie SignTool może w przeciwnym razie pomyślnie podpisać plik.
Uwaga / Notatka
Dotyczy to szczególnie plików cat.
Ten problem występuje w przypadku plików PE, takich jak .exe, .sysitd. Ten problem występuje z powodu zmiennej ULONG w nagłówku PE, która określa rozmiar obrazu. (Rozmiar obrazu to 2 GB dla systemów operacyjnych na poziomie starszym, takich jak Vista i starsze wersje). Jest to ograniczenie projektu od 1996 roku. Maksymalny limit dla tej wartości to 4 GB dla plików PE, takich jak .exe i .sys. Chociaż pliki .cat są zwykle podpisywalne, wygenerowany skrót wewnętrzny może nie być dokładny.
Aby obejść ten problem, upewnij się, że każdy plik PE, który próbujesz podpisać, jest mniejszy niż 4 GB. Jest to znane ograniczenie projektowe formatu PE, na które nie planuje się rozwiązania, z powodu ograniczeń związanych z kompatybilnością wsteczną.
Uwaga / Notatka
Ten problem nie jest specyficzny dla narzędzia SignTool. Projekt nagłówka PE jest ograniczony do 4 GB dla Windows 7 i nowszych wersji Windows, niezależnie od tego, które narzędzie jest używane.
Najczęściej zadawane pytania (FAQ)
Q1: Jaki jest bieżący, oficjalny limit rozmiaru pliku dla podpisu cyfrowego (i sygnatury czasowej) w Windows?
1: W przypadku plików PE, takich jak .exe i .sys, maksymalny rozmiar pliku do podpisywania wynosi 4 GB.
Q2: Czy istnieje określona wersja Windows, taka jak Windows Server 2016, która ma największą możliwość podpisywania dużych plików?
2: Nie, problem dotyczy wszystkich wersji Windows.
Q3: Czy 64-bitowa wersja narzędzia Signtool ma lepszą obsługę tej funkcji niż wersja 32-bitowa?
1: Nie, 64-bitowa wersja narzędzia SignTool używa tych samych wartości co wersja 32-bitowa. W związku z tym problem pozostaje w wersji 64-bitowej.
Q4: Czy klienci korzystający z 32-bitowej wersji Windows potencjalnie napotykają problemy, jeśli spróbują użyć plików podpisanych przy użyciu 64-bitowej wersji narzędzia SignTool?
Odpowiedź: Nie. Jednak ograniczenia pozostaną bez względu na to, która wersja narzędzia SignTool jest używana.
Pytanie5: Czy w ogóle należy używać innego narzędzia podpisywania lub metody?
Odpowiedź: Tak. Azure Trusted Signing jest usługą Microsoft podpisywania kodu i jest zalecaną nowoczesną alternatywą do zarządzania własnymi certyfikatami. Obsługuje zarządzanie cyklem życia certyfikatów i integruje się z pipeline'ami CI/CD. Azure Key Vault jest inną opcją podpisywania przy użyciu certyfikatów przechowywanych w chmurze. W przypadku scenariuszy trybu offline lub samoobsługi narzędzie SignTool pozostaje standardowym narzędziem.