Udostępnij za pośrednictwem


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 Windows 10 SDK, Windows 10 HLK, Windows 10 WDK i Windows 10 ADK kompilacje 20236 i nowsze wymagają określenia algorytmu skrótu. Polecenie SignTool sign wymaga algorytmu skrótu /fd pliku i opcji algorytmu skrótu /td sygnatury czasowej, która ma być określona odpowiednio podczas podpisywania i znacznika czasu. 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 znacznika czasu.

W wierszu polecenia wpisz:

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 polecenia 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 TimeStamp Command Options (Opcje poleceń znacznika czasu).
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
/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ć za catdb pomocą polecenia .

Opcja polecenia Catdb opis
/d Określa, że domyślna baza danych wykazów jest aktualizowana. Jeśli ani /d opcja nie /g jest używana, narzędzie Sign Tool aktualizuje składnik systemu i bazę danych sterowników.
/gGUID Określa, że baza danych wykazu zidentyfikowana przez globalnie unikatowy identyfikator GUID 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 sign pomocą 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.
/ac plik 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.
/c CertTemplateName Określa nazwę szablonu certyfikatu (rozszerzenie Microsoft) dla certyfikatu podpisywania.
/csp CSPName Określa dostawcę usług kryptograficznych (CSP), który zawiera kontener klucza prywatnego.
/d Desc Określa opis podpisanej zawartości.
/du Adres URL Określa adres URL (Uniform Resource Locator) rozszerzonego opisu podpisanej zawartości.
/f SignCertFile Określa certyfikat podpisywania w pliku. Jeśli plik jest w formacie WYMIANY informacji osobistych (PFX) 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.
Nuta: Błąd jest generowany, jeśli przełącznik nie został podany podczas podpisywania/fd.
/fd certHash Określenie ciągu certHash będzie domyślne dla algorytmu używanego w certyfikacie podpisywania.
Nuta: Błąd jest generowany, jeśli przełącznik nie został podany podczas podpisywania/fd.
/i Nazwa wystawcy Określa nazwę wystawcy certyfikatu podpisywania. Ta wartość może być podciągiem całej nazwy wystawcy.
/kc PrivKeyContainerName Określa nazwę kontenera kluczy prywatnych.
/n SubjectName 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 Hasł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\filename.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.
/r RootSubjectName 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 Nazwa sklepu Określa magazyn otwierany podczas wyszukiwania certyfikatu. Jeśli ta opcja nie zostanie określona, My sklep zostanie otwarty.
/sha1 Hasz 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 Adres 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 .
/td alga Służy do żądania algorytmu /tr skrótu używanego przez serwer sygnatury czasowej RFC 3161.
Nuta: Jeśli nie podano znacznika czasu, zostanie wygenerowany /td błąd.
/tr Adres 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 .
/u Zwyczaj 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 TimeStamp pomocą polecenia .

Opcja polecenia TimeStamp opis
/p7 Oznacza pliki PKCS #7 znacznikami czasu.
/t Adres URL Określa adres URL serwera znaczników czasu. Plik oznaczany znacznikiem czasu musi zostać wcześniej podpisany. Wymagana /t /tr jest opcja lub .
/td alga Służy do żądania algorytmu /tr skrótu używanego przez serwer sygnatury czasowej RFC 3161.
Nuta: Jeśli nie podano znacznika czasu, zostanie wygenerowany /td błąd.
/tpindeks Sygnatura czasowa sygnatury w indeksie.
/tr Adres 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 katalogu, która jest identyfikowana przez identyfikator 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.
/ds Indeks 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 systemie Windows 8 lub nowszym.
/oWersja Weryfikuje plik na podstawie wersji systemu operacyjnego. Wersja ma następującą formę: PlatformID:VerMajor.VerMinor.BuildNumber. Identyfikator platformy reprezentuje podstawową wartość elementu PlatformID członkowskiego wyliczenia. Ważne: zaleca się 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 , wykazy systemu sprawdzające poprawność w starszym systemie operacyjnym mogą nie być poprawnie 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 ta 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 .
/pgIdentyfikator GUID zasad 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 się w My 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 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ż