SignTool.exe (Narzędzie podpisu)

Narzędzie podpisywania to narzędzie wiersza polecenia, które cyfrowo podpisuje pliki, weryfikuje podpisy w plikach i oznacza pliki znacznikami czasu.

To narzędzie jest instalowane automatycznie z programem Visual Studio. Aby uruchomić narzędzie, użyj programu Visual Studio wiersz polecenia dla deweloperów lub Visual Studio Developer PowerShell.

Uwaga

Zestaw WINDOWS 10 SDK, Windows 10 HLK, Windows 10 WDK i Windows 10 ADK tworzy kompilacje 20236 i nowsze wymagają określenia algorytmu szyfrowania. Polecenie SignTool sign wymaga, aby /fdsign/td podczas podpisywania i oznaczania znacznikiem czasu był określony algorytm skrótu pliku i opcja algorytmu skrótu sygnatury czasowej./fd Zostanie zgłoszony błąd (kod błędu 1), /fd/td jeśli nie zostanie określony podczas podpisywania, a jeśli nie zostanie określony podczas sygnatury czasowej.

W wierszu polecenia wpisz następujące polecenie:

Składnia

signtool [command] [options] [file_name | ...]  

Parametry

Argument Opis
command Jedno z czterech poleceń (catdb, sign, Timestamplub Verify), które określa operację do wykonania na pliku. Aby zapoznać się z opisem każdego polecenia, zobacz następną tabelę.
options Opcja, która modyfikuje polecenie. Oprócz opcji globalnych i /q/v każde polecenie obsługuje unikatowy zestaw opcji.
file_name Ścieżka do pliku, który ma zostać podpisany.

Poniższe polecenia są obsługiwane przez narzędzie podpisywania. Każde polecenie jest używane z odrębnym zestawem opcji, które wymieniono w odpowiednich sekcjach.

Polecenie Opis
catdb Dodaje plik wykazu do bazy danych wykazów lub usuwa go z niej. Bazy danych wykazów służą do automatycznego wyszukiwania plików wykazu i są identyfikowane przez identyfikator GUID. Aby uzyskać listę opcji obsługiwanych przez polecenie catdb , zobacz catdb.
sign Cyfrowo podpisuje pliki. Podpisy cyfrowe chronią pliki przed ingerencją osób niepowołanych i umożliwiają użytkownikom weryfikację podpisującego na podstawie certyfikatu podpisywania. Aby uzyskać listę opcji obsługiwanych przez polecenie sign , zobacz sign.
Timestamp Oznacza pliki znacznikami czasu. Aby uzyskać listę opcji obsługiwanych przez polecenie TimeStamp , zobacz TimeStamp.
Verify Weryfikuje podpis cyfrowy plików, ustalając, czy certyfikat podpisywania został wystawiony przez zaufany urząd, czy certyfikat podpisywania został odwołany i, opcjonalnie, czy certyfikat podpisywania jest ważny dla określonych zasad. Aby uzyskać listę opcji obsługiwanych przez polecenie Verify , zobacz Verify.

Poniższe opcje są stosowane do wszystkich poleceń narzędzia podpisywania.

Opcja globalna Opis
/q Nie wyświetla danych wyjściowych, jeśli działanie polecenia zakończy się pomyślnie, i wyświetla minimalne dane wyjściowe, jeśli działanie polecenia zakończy się niepowodzeniem.
/v Wyświetla pełne dane wyjściowe bez względu na to, czy polecenie zostanie wykonane pomyślnie, czy jego działanie zakończy się niepowodzeniem, a ponadto wyświetla komunikaty ostrzegawcze.
/debug Wyświetla informacje debugowania.

Opcje polecenia catdb

W poniższej tabeli wymieniono opcje, których można użyć z poleceniem catdb .

Opcja polecenia Catdb Opis
/d Określa, że domyślna baza danych wykazów jest aktualizowana. Jeśli ani opcja nie /d jest /g używana, narzędzie podpisywania aktualizuje składnik systemu i bazę danych sterowników.
/g/g Określa, że baza danych wykazu identyfikowane przez identyfikator GUID unikatowy identyfikator globalny jest aktualizowany.
/r Usuwa określone wykazy z bazy danych wykazów. Jeśli ta opcja nie jest określona, narzędzie podpisywania dodaje określone wykazy do bazy danych wykazów.
/u Określa, że dla dodawanych plików wykazów unikatowe nazwy są generowane automatycznie. W razie potrzeby nazwy plików wykazów są zmieniane, aby zapobiec konfliktom nazw z istniejącymi plikami wykazów. Jeśli ta opcja nie jest określona, narzędzie podpisywania zastępuje wszelkie istniejące wykazy, które mają taką samą nazwę jak wykaz dodawany.

Podpisz opcje polecenia

W poniższej tabeli wymieniono opcje, których można użyć z poleceniem sign .

Opcja polecenia Sign Opis
/a Automatycznie wybiera najlepszy certyfikat podpisywania. Narzędzie podpisywania znajdzie wszystkie ważne certyfikaty, które spełniają wszystkie określone warunki, i wybierze ten, którego okres ważności jest najdłuższy. Jeśli ta opcja nie jest określona, narzędzie podpisywania spodziewa się znaleźć tylko jeden ważny certyfikat podpisywania.
/ac/ac Dodaje dodatkowy certyfikat z pliku do bloku sygnatur.
/as Dołącza ten podpis. Jeśli nie jest określony podpis podstawowy, ten podpis jest ustawiany jako podpis podstawowy.
/c/c Określa nazwę szablonu certyfikatu (rozszerzenie Microsoft) dla certyfikatu podpisywania.
/csp/csp Określa dostawcę usług kryptograficznych (CSP), który zawiera kontener klucza prywatnego.
/d/d Określa opis podpisanej zawartości.
/du/du Określa adres URL (Uniform Resource Locator) rozszerzonego opisu podpisanej zawartości.
/f/f Określa certyfikat podpisywania w pliku. Jeśli plik jest w formacie Exchange (PFX) i chroniony hasłem, /p użyj opcji , aby określić hasło. Jeśli plik nie zawiera kluczy prywatnych, /csp użyj opcji i /kc , aby określić nazwę kontenera CSP i klucza prywatnego.
/fd Określa algorytm tworzenia skrótu pliku na potrzeby tworzenia podpisów plików.

Jeśli podczas podpisywania nie /fd podano przełącznika, generowany jest błąd.
/fd/fd Określenie ciągu certHash domyślnie algorytm używany w certyfikacie podpisywania.

Jeśli podczas podpisywania nie /fd podano przełącznika, generowany jest błąd.
/i/i Określa nazwę wystawcy certyfikatu podpisywania. Ta wartość może być podciągiem całej nazwy wystawcy.
/kc/kc Określa nazwę kontenera kluczy prywatnych.
/n/n Określa nazwę podmiotu certyfikatu podpisywania. Ta wartość może być podciągiem całej nazwy podmiotu.
/nph Jeśli jest obsługiwana, pomija skróty stron dla plików wykonywalnych. Wartość domyślna jest określana przez zmienną środowiskową SIGNTOOL_PAGE_HASHES i wersję pliku wintrust.dll. Ta opcja jest ignorowana dla plików innych niż PE.
/p/p Określa hasło używane podczas otwierania pliku PFX. (Użyj opcji /f , aby określić plik PFX).
/p7/p7 Określa, że plik PKCS (Public Key Cryptography Standards) #7 jest generowany dla każdego określonego pliku zawartości. PKCS #7 mają nazwę pathfilename.p7.
/p7ce/p7ce Określa opcje dla podpisanej zawartości PKCS #7. Ustaw wartość na "Embedded", aby osadzić podpisaną zawartość w pliku PKCS #7, lub wartość "DetachedSignedData", aby utworzyć podpisaną część danych w odłącznym pliku PKCS #7 danych. Jeśli ta /p7ce opcja nie jest używana, podpisana zawartość jest osadzona domyślnie.
/p7co/p7co Określa identyfikator obiektu (OID), który identyfikuje podpisaną zawartość PKCS #7.
/ph Jeśli jest obsługiwana, generuje skróty stron dla plików wykonywalnych.
/r/r Określa nazwę podmiotu certyfikatu głównego, z którym musi zostać połączony certyfikat podpisywania. Ta wartość może być podciągiem całej nazwy podmiotu certyfikatu głównego.
/s/s Określa magazyn otwierany podczas wyszukiwania certyfikatu. Jeśli ta opcja nie zostanie określona, magazyn My zostanie otwarty.
/sha1/sha1 Określa skrót SHA1 certyfikatu podpisywania. Skrót SHA1 jest zazwyczaj określany, jeśli wiele certyfikatów spełnia kryteria określone przez pozostałe przełączniki.
/sm Określa, że jest używany magazyn komputera, a nie magazyn użytkownika.
/t/t Określa adres URL serwera znaczników czasu. Jeśli ta opcja (lub /tr) nie jest obecna, podpisany plik nie będzie sygnatury czasowej. Jeśli oznaczanie znacznikiem czasu nie powiedzie się, jest generowane ostrzeżenie. Tej opcji nie można używać z opcją /tr .
/td/td Używany z opcją /tr żądania algorytmu skrótu używanego przez serwer sygnatury czasowej RFC 3161.

Jeśli nie zostanie podany znacznik czasu /td , zostanie wygenerowany błąd.
/tr/tr Określa adres URL serwera znaczników czasu RFC 3161. Jeśli ta opcja (lub /t) nie jest obecna, podpisany plik nie będzie sygnatury czasowej. Jeśli oznaczanie znacznikiem czasu nie powiedzie się, jest generowane ostrzeżenie. Tej opcji nie można używać z opcją /t .
/u/u Określa rozszerzone użycie klucza (EKU), które musi być obecne w certyfikacie podpisywania. Wartość Usage można określić za pomocą identyfikatora OID lub ciągu. Domyślna wartość Usage to „Code Signing” (1.3.6.1.5.5.7.3.3).
/uw Określa użycie funkcji weryfikacji składników systemu Windows (1.3.6.1.4.1.311.10.3.6).

Przykłady użycia zawiera temat Using SignTool to SignTool to Sign a File (Podpisywanie pliku przy użyciu narzędzia SignTool).

Opcje polecenia sygnatury czasowej

W poniższej tabeli wymieniono opcje, których można użyć z poleceniem TimeStamp .

Opcja polecenia TimeStamp Opis
/p7 Oznacza pliki PKCS #7 znacznikami czasu.
/t/t Określa adres URL serwera znaczników czasu. Plik oznaczany znacznikiem czasu musi zostać wcześniej podpisany. Wymagana /t jest opcja /tr lub .
/td/td Używany z opcją /tr żądania algorytmu skrótu używanego przez serwer sygnatury czasowej RFC 3161.

Jeśli nie zostanie podany znacznik czasu /td , zostanie wygenerowany błąd.
/tp/tp Sygnatury czasowe sygnatury w indeksie.
/tr/tr Określa adres URL serwera znaczników czasu RFC 3161. Plik oznaczany znacznikiem czasu musi zostać wcześniej podpisany. Wymagana /tr jest opcja /t lub .

Aby uzyskać przykład użycia, zobacz Dodawanie sygnatury czasowej do wcześniej podpisanych plików.

Sprawdź opcje polecenia

Opcja polecenia Verify Opis
/a Określa, że w celu weryfikacji pliku można użyć wszystkich metod. Najpierw bazy danych wykazów są przeszukiwane w celu ustalenia, czy plik jest podpisany w wykazie. Jeśli plik nie jest podpisany w żadnym wykazie, narzędzie podpisywania próbuje zweryfikować podpis osadzony w pliku. Ta opcja jest zalecana w przypadku weryfikowania plików, które mogą, ale nie muszą, być podpisane w wykazie. Przykładami tych plików są pliki lub sterowniki systemu Windows.
/ad Znajduje wykaz przy użyciu domyślnej bazy danych wykazów.
/ag/ag Znajduje wykaz w bazie danych wykazu, który jest identyfikowany przez CatDBGUID.
/all Weryfikuje wszystkie podpisy w pliku, który zawiera wiele podpisów.
/as Znajduje wykaz przy użyciu bazy danych wykazów składników systemu (sterowniki).
/c/c Określa plik wykazu według nazwy.
/d Określa, że narzędzie podpisywania powinno drukować opis i adres URL opisu.
/ds/ds Weryfikuje podpis w określonej pozycji.
/hash (SHA1|SHA256) Określa opcjonalny algorytm wyznaczania wartości skrótu, który ma być używany podczas wyszukiwania pliku w wykazie.
/kp Określa, że weryfikacja powinna być wykonywana przy użyciu zasad podpisywania sterowników trybu jądra.
/ms Używa wielu semantyk weryfikacji. Jest to domyślne zachowanie wywołania WinVerifyTrust w Windows 8 i powyżej.
/o/o Weryfikuje plik na podstawie wersji systemu operacyjnego. Wersja ma następującą postać: PlatformID:VerMajor. VerMinor. Numer kompilacji. Wartość PlatformID reprezentuje podstawową wartość członka wyliczenia. Ważne: Zaleca się użycie przełącznika. Jeśli /o nie zostanie określony, SignTool.exe zwraca nieoczekiwane wyniki. Jeśli na przykład przełącznik /o nie zostanie włączony, wykazy systemów, które poprawnie weryfikują dane w starszym systemie operacyjnym, mogą nie zostać poprawnie zweryfikowane w nowszej wersji systemu operacyjnego.
/p7 Weryfikuje pliki PKCS #7. Żadne z istniejących zasad nie są używane do weryfikacji plików PKCS #7. Podpis jest sprawdzany i zostaje utworzony łańcuch dla certyfikatu podpisywania.
/pa Określa, że mają być używane domyślne zasady weryfikacji Authenticode. Jeśli ta /pa opcja nie zostanie określona, narzędzie podpisywania użyje zasad Windows weryfikacji sterownika. Tej opcji nie można używać z opcjami catdb .
/pg/pg Określa zasady weryfikacji według identyfikatora GUID. PolicyGUID odpowiada actionID zasad weryfikacji. Tej opcji nie można używać z opcjami catdb .
/ph Określa, że narzędzie podpisywania powinno drukować i weryfikować wartości skrótu stron.
/r/r Określa nazwę podmiotu certyfikatu głównego, z którym musi zostać połączony certyfikat podpisywania. Ta wartość może być podciągiem całej nazwy podmiotu certyfikatu głównego.
/tw Określa, że ma być generowane ostrzeżenie, jeśli podpis nie ma znacznika czasu.

Aby uzyskać przykłady użycia, zobacz Using SignTool to Verify a File Signature (Weryfikowanie podpisu pliku przy użyciu narzędzia SignTool).

Wartość zwracana

Kończąc działanie, narzędzie podpisywania zwraca jeden z poniższych kodów zakończenia.

Kod zakończenia Opis
0 Wykonywanie powiodło się.
1 Wykonywanie nie powiodło się.
2 Wykonanie zostało ukończone, ale zostały wygenerowane ostrzeżenia.

Przykłady

Poniższe polecenie dodaje plik wykazu MyCatalogFileName.cat do bazy danych składników systemu i sterowników. Opcja /u generuje unikatową nazwę, jeśli to konieczne, aby zapobiec zastąpieniu istniejącego pliku katalogu o nazwie MyCatalogFileName.cat.

signtool catdb /v /u MyCatalogFileName.cat  

Poniższe polecenie podpisuje plik automatycznie przy użyciu najlepszego certyfikatu.

signtool sign /a /fd SHA256 MyFile.exe

Poniższe polecenie podpisuje cyfrowo plik przy użyciu certyfikatu przechowywanego w chronionym hasłem pliku PFX.

signtool sign /f MyCert.pfx /p MyPassword /fd SHA256 MyFile.exe

Poniższe polecenie podpisuje cyfrowo plik i oznacza go sygnaturą czasową. Certyfikat użyty do podpisania pliku jest przechowywany w pliku PFX.

signtool sign /f MyCert.pfx /t http://timestamp.digicert.com /fd SHA256 MyFile.exe

Następujące polecenie podpisuje plik przy użyciu certyfikatu znajdującego My się w magazynie o nazwie podmiotu My Company Certificate.

signtool sign /n "My Company Certificate" /fd SHA256 MyFile.exe

Poniższe polecenie podpisuje formant ActiveX i udostępnia informacje wyświetlane przez program Internet Explorer, gdy użytkownik jest monitowany o zainstalowanie tego formantu.

Signtool sign /f MyCert.pfx /d: "MyControl" /du http://www.example.com/MyControl/info.html /fd SHA256 MyControl.exe

Poniższe polecenie oznacza znacznikiem czasu plik, który jest już podpisany cyfrowo.

signtool timestamp /t http://timestamp.digicert.com MyFile.exe

Następujące polecenie sygnatury czasowej pliku przy użyciu serwera sygnatury czasowej RFC 3161.

signtool timestamp /tr http://timestamp.digicert.com /td SHA256 MyFile.exe

Poniższe polecenie sprawdza, czy plik jest podpisany.

signtool verify MyFile.exe  

Poniższe polecenie sprawdza plik systemowy, który może być podpisany w wykazie.

signtool verify /a SystemFile.dll  

Następujące polecenie weryfikuje plik systemowy, który jest podpisany w wykazie o nazwie MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll  

Zobacz też