SignTool.exe (İmza Aracı)

İmza aracı, dosyaları dijital imzalayan, dosyalardaki imzaları doğrulayan ve dosyalara zaman damgası veren bir komut satırı aracıdır.

Bu araç, Visual Studio ile birlikte otomatik olarak yüklenir. Aracı çalıştırmak için Visual Studio Geliştirici Komut İstemi'ni veya Visual Studio Geliştirici PowerShell'i kullanın.

Not

Windows 10 SDK, Windows 10 HLK, Windows 10 WDK ve Windows 10 ADK derlemeleri 20236 ve üzeri için özet algoritmasının belirtilmesi gerekir. SignTool sign komutu, dosya özet algoritmasının /fd ve zaman damgası özet algoritması seçeneğinin /td sırasıyla imzalama ve zaman damgası sırasında belirtilmesi gerekir. İmzalama sırasında belirtilmezse /fd ve zaman damgası sırasında belirtilmezse /td bir hata (hata kodu 1) oluşturulur.

Komut istemine şunu yazın:

Sözdizimi

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

Parametreler

Bağımsız değişken Açıklama
command Dosya üzerinde gerçekleştirilecek işlemi belirten dört komutcatdb (, sign, Timestampveya Verify) biri. Her bir komutun açıklaması için sonraki tabloya bakın.
options Bir komutu değiştiren seçenek. Genel /q ve /v seçeneklere ek olarak, her komut benzersiz bir seçenek kümesini destekler.
file_name İmzalanacak dosyanın yolu.

Aşağıdaki komutlar İmza Aracı tarafından desteklenir. Her komut, ilgili bölümlerinde listelenen ayrı seçenekler kümesiyle kullanılır.

Komut Açıklama
catdb Katalog veritabanına bir katalog dosyası ekler veya katalog veritabanından katalog dosyasını kaldırır. Katalog veritabanları, katalog dosyalarının otomatik araması için kullanılır ve GUID ile tanımlanır. komutu tarafından catdb desteklenen seçeneklerin listesi için bkz . catdb Komut Seçenekleri.
sign Dosyaları dijital olarak imzalar. Dijital imzalar, dosyaları izinsiz kullanıma karşı korur ve kullanıcıların bir imza sertifikası temelinde imzalayanı doğrulamasına olanak sağlar. Komutun desteklediği sign seçeneklerin listesi için bkz . Komut Seçenekleri'ni imzalama.
Timestamp Zaman damgaları dosyaları. komutu tarafından TimeStamp desteklenen seçeneklerin listesi için bkz . TimeStamp Komut Seçenekleri.
Verify İmzalama sertifikasının güvenilir bir yetkili tarafından verilmiş, imzalama sertifikasının iptal edilmiş ve isteğe bağlı olarak imzalama sertifikasının belirli bir ilke için geçerli olup olmadığını belirleyerek dosyaların dijital imzasını doğrular. Komutun desteklediği Verify seçeneklerin listesi için bkz . Komut Seçeneklerini Doğrulama.

Aşağıdaki seçenekler bütün İmza Aracı komutlarına uygulanır.

Genel seçenek Açıklama
/q Komut başarıyla çalışırsa bir çıktı görüntülemez ve komut başarısız olursa en az çıktı görüntüler.
/v Komutun başarıyla çalıştırıldığına veya başarısız olduğuna bakılmaksızın ayrıntılı çıktıyı görüntüler ve uyarı iletilerini görüntüler.
/debug Hata ayıklama bilgisini görüntüler.

catdb Komut Seçenekleri

Aşağıdaki tabloda komutuyla catdb kullanılabilecek seçenekler listelenmiştir.

Catdb seçeneği Açıklama
/d Varsayılan katalog veritabanının güncellendiğini belirtir. ne de /d /g seçeneği kullanılmazsa, İmza Aracı sistem bileşenini ve sürücü veritabanını güncelleştirir.
/gGUID Genel olarak benzersiz tanımlayıcı GUID'i tarafından tanımlanan katalog veritabanının güncelleştirildiğini belirtir.
/r Belirtilen katalogları katalog veritabanından kaldırır. Bu seçenek belirtilmezse, İmza Aracı belirtilen katalogları katalog veritabanına ekler.
/u Benzersiz bir adın eklenen katalog dosyaları için otomatik olarak oluşturulduğunu belirtir. Gerekirse, katalog dosyaları var olan katalog dosyaları ile ad çakışmalarını önlemek için yeniden adlandırılır. Bu seçenek belirtilmezse, İmza Aracı eklenmekte olan katalogla aynı ada sahip tüm var olan katalogların üzerine yazar.

imza Komut Seçenekleri

Aşağıdaki tabloda komutuyla sign kullanılabilecek seçenekler listelenmiştir.

imza komut seçenekleri Açıklama
/a En iyi imzalama sertifikasını otomatik olarak seçer. İmza Aracı, tüm belirtilen koşulları karşılayan tüm geçerli sertifikaları bulur ve en uzun süre geçerli olanı seçer. Bu seçenek yoksa, İmza Aracı yalnızca geçerli bir imza sertifikası bulmayı bekler.
/ac dosya İmza bloğuna dosyadan ek bir sertifika ekler.
/as Bu imzayı ekler. Birincil bir imza yoksa, bunun yerine bu imza birincil imza yapılır.
/c CertTemplateName İmzalama sertifikasının Sertifika Şablon Adını (Microsoft uzantılı) belirtir.
/csp CSPName Özel anahtar kapsayıcısı içeren şifreleme hizmet sağlayıcısını (CSP) belirtir.
/d Desc İmzalı içeriğin açıklamasını belirtir.
/du URL İmzalanmış içeriğin genişletilmiş açıklaması için Tek Düzen Kaynak Konum Belirleyicisi (URL) belirtir.
/f SignCertFile Bir dosyadaki imza sertifikanı belirtir. Dosya Kişisel Bilgi Değişimi (PFX) biçimindeyse ve parolayla korunuyorsa, parolayı belirtmek için seçeneğini kullanın /p . Dosya özel anahtar içermiyorsa, CSP ve özel anahtar kapsayıcı adını belirtmek için ve /kc seçeneklerini kullanın/csp.
/fd Dosya imzalarını oluşturmak için kullanılacak dosya özet algoritmasını belirtir.
Not: İmzalama sırasında anahtar sağlanmazsa /fd bir hata oluşturulur.
/fd certHash certHash dizesinin belirtilmesi, imzalama sertifikasında kullanılan algoritmaya varsayılan olarak eklenir.
Not: İmzalama sırasında anahtar sağlanmazsa /fd bir hata oluşturulur.
/i Veren Adı İmzalayan sertifikayı verenin adını belirtir. Bu değer, tam yayınlayıcı adının bir alt dizesi olabilir.
/kc PrivKeyContainerName Özel anahtar kapsayıcısı adını belirtir.
/n Konu Adı İmzalayan sertifika konusunun adını belirtir. Bu değer, tam konu adının bir alt dizesi olabilir.
/nph Destekleniyorsa, yürütülebilir dosyalar için sayfa karmalarını gizler. Varsayılan, wintrust.dll sürümü ve SIGNTOOL_PAGE_HASHES ortam değişkeni tarafından belirlenir. PE olmayan dosyalar için bu seçenek göz ardı edilir.
/p Parola PFX dosyası açılırken kullanılacak parolayı belirtir. (PFX dosyası belirtmek için seçeneğini kullanın /f .)
/p7Yol Bir Ortak Anahtar Şifreleme Standartları (PKCS) #7 dosyasının belirtilen her içerik dosyası için üretildiğini belirtir. PKCS #7 dosyaları path\filename.p7 olarak adlandırılır.
/p7ceDeğer İmzalanmış PKCS #7 içeriği için seçenekleri belirtir. İmzalı içeriği PKCS #7 dosyasına eklemek için Değer olarak "Katıştırılmış" veya ayrılmış bir PKCS #7 dosyasının imzalı veri bölümünü oluşturmak için "DetachedSignedData" olarak ayarlayın. /p7ce Seçenek kullanılmazsa, imzalı içerik varsayılan olarak eklenir.
/p7co<OID> İmzalanmış PKCS #7 içeriğini tanımlayan nesne tanımlayıcısını (OID) belirtir.
/ph Destekleniyorsa, yürütülebilir dosyalar için sayfa karmaları oluşturur.
/r RootSubjectName İmzalama sertifikasının bağlanması gerektiği kök sertifikası konusunun adını belirtir. Bu değer, kök sertifikasının tam konu adının bir alt dizesi olabilir.
/s StoreName Sertifika için arama yaparken açılacak depoyu belirtir. Bu seçenek belirtilmezse depo My açılır.
/sha1 Karma İmza sertifikanın SHA1 karmasını belirtir. Kalan anahtarlar tarafından belirtilen ölçütlere uygun birden çok sertifika olduğunda genellikle SHA1 karması belirtilir.
/sm Bir kullanıcı deposu yerine, makine deposu kullanıldığını belirtir.
/t URL Zaman damgası sunucusunun URL'sini belirtir. Bu seçenek (veya /tr) yoksa, imzalanan dosyaya zaman damgası eklenmez. Zaman damgası başarısız olduğunda bir uyarı üretilir. Bu seçenek seçeneğiyle /tr kullanılamaz.
/td alg RFC 3161 zaman damgası sunucusu tarafından kullanılan bir özet algoritması isteme seçeneğiyle birlikte /tr kullanılır.
Not: Zaman damgası oluşturulurken sağlanmazsa /td bir hata oluşturulur.
/tr URL RFC 3161 zaman damgası sunucusunun URL'sini belirtir. Bu seçenek (veya /t) yoksa, imzalanan dosyaya zaman damgası eklenmez. Zaman damgası başarısız olduğunda bir uyarı üretilir. Bu seçenek seçeneğiyle /t kullanılamaz.
/u Kullanım İmzalama sertifikasında hazır olması gereken gelişmiş anahtar kullanımını (EKU) belirtir. Kullanım değeri, OID veya dize ile belirtilebilir. "Kod İmzalama" varsayılan kullanım miktarıdır. (1.3.6.1.5.5.7.3.3).
/uw "Windows Sistem Bileşeni Doğrulaması" kullanımını belirtir. (1.3.6.1.4.1.311.10.3.6).

Kullanım örnekleri için bkz . Dosyayı İmzalarken SignTool Kullanma.

TimeStamp Komut Seçenekleri

Aşağıdaki tabloda komutuyla TimeStamp kullanılabilecek seçenekler listelenmiştir.

Zaman Damgası seçeneği Açıklama
/p7 Zaman damgaları PKCS #7 dosyaları.
/t URL Zaman damgası sunucusunun URL'sini belirtir. Zaman damgası vurulan dosyanın önceden imzalanmış olması gerekir. /t veya /tr seçeneği gereklidir.
/td alg RFC 3161 zaman damgası sunucusu tarafından kullanılan bir özet algoritması isteme seçeneğiyle birlikte /tr kullanılır.
Not: Zaman damgası oluşturulurken sağlanmazsa /td bir hata oluşturulur.
/tpDizin Zaman, imzayı dizine damgalar.
/tr URL RFC 3161 zaman damgası sunucusunun URL'sini belirtir. Zaman damgası vurulan dosyanın önceden imzalanmış olması gerekir. /tr veya /t seçeneği gereklidir.

Kullanım örneği için bkz . Önceden İmzalanan Dosyalara Zaman Damgaları Ekleme.

Komut Seçeneklerini Doğrulama

Seçeneği doğrulama Açıklama
/a Tüm yöntemlerin dosyayı doğrulamak için kullanılabileceğini belirtir. İlk olarak, dosyanın bir katalogda imzalanmış olup olmadığını belirlemek için katalog veritabanları aranır. Dosya herhangi bir katalogda imzalanmamışsa, İmza Aracı dosyanın katıştırılmış imzasını doğrulamayı dener. Katalogda oturum açmış veya açmamış dosyalar doğrulanırken bu seçenek önerilir. Bu dosyaların örnekleri arasında Windows dosyaları veya sürücüleri yer alır.
/ad Varsayılan katalog veritabanını kullanarak kataloğu bulur.
/agCatDBGUID CatDBGUID tarafından tanımlanan katalog veritabanındaki kataloğu bulur.
/all Birden çok imza içeren bir dosyadaki tüm imzaları doğrular.
/as Sistem bileşeni (sürücü) katalog veritabanını kullanarak kataloğu bulur.
/cCatFile Katalog dosyası adını belirtir.
/d İmza Aracı'nın açıklama ve açıklama URL'sini yazdırması gerektiğini belirtir.
/ds Dizin Belirtilen bir konumda imzayı doğrular.
/hash (SHA1|SHA256) Katalogdaki bir dosya ararken kullanmak için bir isteğe bağlı karma algoritmasını belirtir.
/kp Çekirdek modu sürücü imzalama ilkesi ile doğrulama gerçekleştirilmesi gerektiğini belirtir.
/ms Birden çok doğrulama mantığı kullanır. Bu, Windows 8 ve üzeri bir WinVerifyTrust çağrısının varsayılan davranışıdır.
/oSürüm İşletim sistemi sürümüne göre dosyayı doğrular. Sürüm şu biçimdedir: PlatformID:VerMajor.VerMinor.BuildNumber. PlatformID , bir PlatformID numaralandırma üyesinin temel alınan değerini temsil eder. Önemli: Anahtarın /o kullanılması önerilir. Belirtilmezse /o , SignTool.exe beklenmeyen sonuçlar döndürebilir. Örneğin, anahtarı dahil /o etmediyseniz, eski bir işletim sisteminde doğru şekilde doğru doğrulayan sistem katalogları daha yeni bir işletim sisteminde doğru şekilde doğrulanamayabilir.
/p7 PKCS #7 dosyalarını doğrular. Varolan ilkeler PKCS #7 doğrulaması için kullanılmaz. İmza denetlenir ve imzalama sertifikası zincir oluşturulur.
/pa Varsayılan Authenticode Doğrulama İlkesi kullanılması gerektiğini belirtir. /pa Seçenek belirtilmezse, İmza Aracı Windows Sürücü Doğrulama İlkesi'ni kullanır. Bu seçenek seçeneklerle catdb kullanılamaz.
/pgİlkeGUID GUID'ye göre doğrulama ilkesi belirtir. PolicyGUID, doğrulama ilkesinin ActionID'sine karşılık gelir. Bu seçenek seçeneklerle catdb kullanılamaz.
/ph İmza Aracı'nın sayfa karma değerlerini yazdırması ve doğrulaması gerektiğini belirtir.
/rRootSubjectName İmzalama sertifikasının bağlanması gerektiği kök sertifikası konusunun adını belirtir. Bu değer, kök sertifikasının tam konu adının bir alt dizesi olabilir.
/tw İmza zaman damgalı değilse bir uyarı oluşturulacağını belirtir.

Kullanım örnekleri için bkz . Dosya İmzasını Doğrulamak için SignTool Kullanma.

Dönüş Değeri

İmza Aracı, sonlandırıldığında aşağıdaki çıkış kodlarından birini döndürür.

Çıkış kodu Açıklama
0 Yürütme başarılı oldu.
1 Yürütme başarısız oldu.
2 Yürütme uyarılarla tamamlandı.

Örnekler

Aşağıdaki komut, MyCatalogFileName.cat katalog dosyasını sistem bileşeni ve sürücü veritabanına ekler. seçeneği, /u adlı MyCatalogFileName.catmevcut bir katalog dosyasının değiştirilmesini önlemek için gerekirse benzersiz bir ad oluşturur.

signtool catdb /v /u MyCatalogFileName.cat  

Aşağıdaki komut en iyi sertifikayı kullanarak bir dosyayı otomatik olarak imzalar.

signtool sign /a /fd SHA256 MyFile.exe

Aşağıdaki komut parola korumalı bir PFX dosyasında depolanan bir sertifika kullanarak bir dosyayı dijital olarak imzalar.

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

Aşağıdaki komut bir dosyayı dijital olarak imzalar ve zaman damgası oluşturur. Dosyayı imzalamak için kullanılan sertifika bir PFX dosyasında saklanır.

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

Aşağıdaki komut, depoda My bulunan ve konu adına My Company Certificatesahip bir sertifika kullanarak dosyayı imzalar.

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

Aşağıdaki komut bir ActiveX denetimini imzalar ve kullanıcıdan denetimi yüklemesi istendiğinde tarayıcıda görüntülenen bilgileri sağlar.

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

Aşağıdaki komut zaten dijital olarak imzalanmış bir dosya için zaman damgası oluşturur.

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

Aşağıdaki komut, RFC 3161 zaman damgası sunucusu kullanarak dosyayı zaman damgalar.

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

Aşağıdaki komut bir dosyanın imzalandığını doğrular.

signtool verify MyFile.exe  

Aşağıdaki komut bir katalogda imzalanmış olabilecek bir sistem dosyasını doğrular.

signtool verify /a SystemFile.dll  

Aşağıdaki komut, adlı MyCatalog.catbir katalogda oturum açmış bir sistem dosyasını doğrular.

signtool verify /c MyCatalog.cat SystemFile.dll  

Ayrıca bkz.