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 wiersza polecenia dla deweloperów programu Visual Studio lub programu Visual Studio Developer PowerShell.

Uwaga

Zestaw SDK Windows 10, Windows 10 HLK, Windows 10 WDK i Windows 10 adK kompilacji 20236, a później wymagają określenia algorytmu skrótu. Polecenie SignTool sign wymaga algorytmu skrótu /fd pliku i opcji algorytmu skrótu/tdsygnatury czasowej, która ma zostać określona podczas podpisywania i sygnatury czasowej. Błąd (kod błędu 1) zostanie zgłoszony, jeśli /fd nie zostanie określony podczas podpisywania i jeśli /td 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 w pliku. Aby zapoznać się z opisem każdego polecenia, zobacz następną tabelę.
options Opcja, która modyfikuje polecenie. Oprócz opcji globalnych /q i /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 catdb polecenie, zobacz opcje poleceń 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 sign polecenie, zobacz Podpisywanie opcji poleceń.
Timestamp Oznacza pliki znacznikami czasu. Aby uzyskać listę opcji obsługiwanych przez TimeStamp polecenie, zobacz Opcje poleceń sygnatury czasowej.
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 Verify polecenie, zobacz Weryfikowanie opcji poleceń.

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

Opcja globalna Opis
/P 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.
/Debugowania Wyświetla informacje debugowania.

Opcje polecenia catdb

W poniższej tabeli wymieniono opcje, których można użyć za pomocą catdb polecenia .

Opcja polecenia Catdb Opis
/d Określa, że domyślna baza danych wykazów jest aktualizowana. Jeśli nie /d jest używana ani /g opcja, narzędzie sign tool aktualizuje składnik systemowy i bazę danych sterowników.
/gIdentyfikator guid Określa, że baza danych wykazu zidentyfikowana przez identyfikator GUID unikatowego identyfikatora globalnego jest aktualizowana.
/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ć za pomocą sign polecenia .

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.
/acPlik Dodaje dodatkowy certyfikat z pliku do bloku podpisu.
/as Dołącza ten podpis. Jeśli nie jest określony podpis podstawowy, ten podpis jest ustawiany jako podpis podstawowy.
/cCertTemplateName Określa nazwę szablonu certyfikatu (rozszerzenie Microsoft) dla certyfikatu podpisywania.
/cspCSPName Określa dostawcę usług kryptograficznych (CSP), który zawiera kontener klucza prywatnego.
/dDesc Określa opis podpisanej zawartości.
/duAdres url Określa adres URL (Uniform Resource Locator) rozszerzonego opisu podpisanej zawartości.
/fSignCertFile Określa certyfikat podpisywania w pliku. Jeśli plik jest w formacie PFX (Personal Information Exchange) i chroniony hasłem, użyj /p opcji , aby określić hasło. Jeśli plik nie zawiera kluczy prywatnych, użyj /csp 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.
Uwaga: Błąd jest generowany, jeśli przełącznik nie jest dostarczany podczas podpisywania /fd .
/fdcertHash Określenie ciągu certHash będzie domyślne dla algorytmu używanego na certyfikacie podpisywania.
Uwaga: Błąd jest generowany, jeśli przełącznik nie jest dostarczany podczas podpisywania /fd .
/iNazwa wystawcy Określa nazwę wystawcy certyfikatu podpisywania. Ta wartość może być podciągiem całej nazwy wystawcy.
/kcPrivKeyContainerName Określa nazwę kontenera kluczy prywatnych.
/nSubjectname 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.
/pHasło Określa hasło używane podczas otwierania pliku PFX. (Użyj /f opcji , aby określić plik PFX).
/p7Ścieżka Określa, że plik PKCS (Public Key Cryptography Standards) #7 jest generowany dla każdego określonego pliku zawartości. Pliki PKCS #7 mają nazwę path\nazwa_pliku.p7.
/p7ceWartość Określa opcje dla podpisanej zawartości PKCS #7. Ustaw wartość " Embedded", aby osadzić podpisaną zawartość w pliku PKCS #7 lub na wartość "DetachedSignedData", aby wygenerować podpisaną część danych odłączonego pliku PKCS #7. Jeśli opcja nie jest używana, podpisana /p7ce zawartość jest domyślnie osadzona.
/p7co<OID> 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.
/rRootSubjectName 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.
/sStorename Określa magazyn otwierany podczas wyszukiwania certyfikatu. Jeśli ta opcja nie zostanie określona My , magazyn zostanie otwarty.
/sha1Mieszania 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.
/tAdres url Określa adres URL serwera znaczników czasu. Jeśli ta opcja (lub /tr) nie jest obecna, podpisany plik nie będzie sygnaturą czasową. Jeśli oznaczanie znacznikiem czasu nie powiedzie się, jest generowane ostrzeżenie. Tej opcji nie można użyć z opcją /tr .
/tdalga Służy do /tr żądania algorytmu szyfrowania używanego przez serwer sygnatury czasowej RFC 3161.
Uwaga: Błąd jest generowany, jeśli /td nie zostanie podany podczas sygnatury czasowej.
/trAdres url Określa adres URL serwera znaczników czasu RFC 3161. Jeśli ta opcja (lub /t) nie jest obecna, podpisany plik nie będzie sygnaturą czasową. Jeśli oznaczanie znacznikiem czasu nie powiedzie się, jest generowane ostrzeżenie. Tej opcji nie można użyć z opcją /t .
/uUżycia 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 można znaleźć w temacie Using SignTool to SignTool to Sign a File (Używanie narzędzia SignTool do podpisywania pliku).

Opcje polecenia sygnatury czasowej

W poniższej tabeli wymieniono opcje, których można użyć za pomocą TimeStamp polecenia .

Opcja polecenia TimeStamp Opis
/p7 Oznacza pliki PKCS #7 znacznikami czasu.
/tAdres url Określa adres URL serwera znaczników czasu. Plik oznaczany znacznikiem czasu musi zostać wcześniej podpisany. Wymagana /t/tr jest opcja lub.
/tdalga Służy do /tr żądania algorytmu szyfrowania używanego przez serwer sygnatury czasowej RFC 3161.
Uwaga: Błąd jest generowany, jeśli /td nie zostanie podany podczas sygnatury czasowej.
/tpIndeks Sygnatura czasowa sygnatury w indeksie.
/trAdres url Określa adres URL serwera znaczników czasu RFC 3161. Plik oznaczany znacznikiem czasu musi zostać wcześniej podpisany. Wymagana /tr/t jest opcja lub.

Aby zapoznać się z przykładem użycia, zobacz Dodawanie sygnatur czasowych 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.
/agCatDBGUID Znajduje wykaz w bazie danych wykazu, która jest identyfikowana 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).
/cCatFile Określa plik wykazu według nazwy.
/d Określa, że narzędzie podpisywania powinno drukować opis i adres URL opisu.
/dsIndeks 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 nowszych.
/oWersja Weryfikuje plik na podstawie wersji systemu operacyjnego. Wersja ma następującą formę: PlatformID:VerMajor. VerMinor. BuildNumber. Identyfikator platformy reprezentuje podstawową PlatformID wartość elementu członkowskiego wyliczenia. Ważne: Zalecane jest użycie przełącznika /o . Jeśli /o nie zostanie określony, SignTool.exe może zwrócić nieoczekiwane wyniki. Jeśli na przykład nie dołączysz przełącznika /o , katalogi systemowe, które poprawnie weryfikują poprawność w starszym systemie operacyjnym, mogą nie być prawidłowo weryfikowane w nowszym systemie operacyjnym.
/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 opcja nie zostanie określona /pa , narzędzie podpisywania używa zasad weryfikacji sterowników systemu Windows. Tej opcji nie można używać z opcjami catdb .
/pgPolicyGUID Określa zasady weryfikacji według identyfikatora GUID. Identyfikator PolicyGUID odpowiada identyfikatorowi 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.
/rRootSubjectName 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.

Przykłady użycia można znaleźć w temacie Using SignTool to Verify a File Signature (Używanie narzędzia SignTool do weryfikowania podpisu pliku).

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 jest to konieczne, aby zapobiec zastąpieniu istniejącego pliku wykazu 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

Następujące polecenie podpisuje kontrolkę ActiveX i udostępnia informacje wyświetlane w przeglądarce po wyświetleniu monitu użytkownika o zainstalowanie kontrolki.

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 czasowe 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 zalogowany w katalogu o nazwie MyCatalog.cat.

signtool verify /c MyCatalog.cat SystemFile.dll  

Zobacz też