Aracılığıyla paylaş


SignTool

SignTool, dosyaları dijital olarak imzalayan, dosyalardaki imzaları doğrulayan, imzaları dosyalardan kaldıran ve dosyaları zaman damgalayan bir komut satırı aracıdır. İmzalama dosyalarının neden önemli olduğu hakkında bilgi için bkz. Kod imzalamaya giriş.

SignTool, Windows Yazılım Geliştirme Seti (SDK). Araç, Windows SDK yükleme yolunun \Bin klasörüne yüklenir, örneğin: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64\signtool.exe.

Not

Windows SDK, Windows Hardware Lab Kit (HLK), Windows Driver Kit (WDK)ve Windows Assessment and Deployment Kit (ADK) derlemeleri 20236 ve sonraki sürümlerde özet algoritmasını belirtmenizi gerektirir. SignTool sign komutu, imzalama ve zaman damgalama sırasında sırasıyla dosya özet algoritması seçeneği (/fd) ve zaman damgası özet algoritması seçeneği (/td) gerektirir.

İmzalama sırasında /fd belirtilmezse ve zaman damgası sırasında /td belirtilmezse, komut başlangıçta hata kodu 0 olan bir uyarı oluşturur. SignTool'un sonraki sürümlerinde uyarı bir hataya dönüşür. SHA256'nın kullanılması önerilir. Sektör tarafından SHA1'den daha güvenli olduğu düşünülmektedir.

Sözdizimi

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

Parametre

Tartışma Açıklama
command Bir dosya üzerinde gerçekleştirilecek işlemi belirten dört komutlardan biri: catdb, sign, timestampveya verify. Her komutun açıklaması için sonraki tabloya bakın.
options Bir komutu değiştiren seçenek. Genel /q ve /v seçeneklerine ek olarak, her komut benzersiz bir seçenek kümesini destekler.
file_name İmzalayacak dosyanın yolu.

SignTool aşağıdaki komutları destekler:

Komut Açıklama
catdb Katalog veritabanına bir katalog dosyası ekler veya bu dosyayı kaldırır. Katalog veritabanları, katalog dosyalarının otomatik araması için kullanılır ve GUID ile tanımlanır. catdb komutu tarafından desteklenen seçeneklerin listesi için bkz. catdb komut seçeneklerini.
remove Bir dosyadan imza kaldırır. remove komutu tarafından desteklenen seçeneklerin listesi için bkz. komut seçeneklerini kaldırma.
sign Dosyaları dijital olarak imzalar. Dijital imzalar dosyaları kurcalamaya karşı korur ve kullanıcıların imzalayanı imzalama sertifikasına göre doğrulamasını sağlar. sign komutu tarafından desteklenen seçeneklerin listesi için bkz. imzalama komutu seçenekleri.
timestamp Zaman, dosyaları damgalar. timestamp komutu tarafından desteklenen seçeneklerin listesi için bkz. zaman damgası komut seçeneklerini.
verify Dosyaların dijital imzasını doğrular. İmzalama sertifikasının güvenilir bir yetkili tarafından verilip verilmediğini, imzalama sertifikasının iptal edilip edilmediğini ve isteğe bağlı olarak, imzalama sertifikasının belirli bir ilke için geçerli olup olmadığını belirler. verify komutu tarafından desteklenen seçeneklerin listesi için bkz. komut seçeneklerini doğrulama.

Aşağıdaki seçenekler tüm SignTool komutları için geçerlidir:

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

Catdb komut seçenekleri

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

Catdb seçeneği Açıklama
/d Varsayılan katalog veritabanının güncelleştirildiğini belirtir. /d veya /gkullanmıyorsanız, SignTool sistem bileşenini ve sürücü veritabanını güncelleştirir.
GUID/g GUID tarafından tanımlanan katalog veritabanının güncelleştirildiğini belirtir.
/r Belirtilen kataloğu katalog veritabanından kaldırır. Bu seçenek belirtilmezse, SignTool belirtilen kataloğu katalog veritabanına ekler.
/u Eklenen katalog dosyaları için otomatik olarak benzersiz bir ad oluşturulduğunu belirtir. Gerekirse, mevcut katalog dosyalarıyla ad çakışmalarını önlemek için katalog dosyaları yeniden adlandırılır. Bu seçenek belirtilmezse, SignTool belirtilen katalogla aynı ada sahip tüm mevcut kataloğun üzerine yazar.

Not

Katalog veritabanları, katalog dosyalarının otomatik araması için kullanılır.

Komut seçeneklerini kaldırma

Aşağıdaki tabloda, remove komutuyla kullanılabilecek seçenekler listelenmiştir:

Kaldır seçeneği Açıklama
/c İmzadaki imzalayan sertifika dışında tüm sertifikaları kaldırın.
/q Başarıda çıkış yok ve hatada en az çıkış. Her zaman olduğu gibi, SignTool başarıda 0 ve hata durumunda 1 döndürür.
/s İmzayı tamamen kaldırın.
/u İmzadan kimliği doğrulanmamış öznitelikleri (örneğin, çift imzalar ve zaman damgaları) kaldırın.
/v Ayrıntılı başarı ve durum iletilerini yazdırın. Bu, hata hakkında biraz daha fazla bilgi de sağlayabilir.

İmzala komut seçenekleri

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

İmzala komutu seçeneği Açıklama
/a Otomatik olarak en iyi imzalama sertifikasını seçer. SignTool, belirtilen tüm koşulları karşılayan tüm geçerli sertifikaları bulur ve en uzun süre geçerli olan sertifikayı seçer. Bu seçenek yoksa, SignTool yalnızca bir geçerli imzalama sertifikası bulmayı bekler.
dosya/ac dosyadan imza bloğuna başka bir sertifika ekler.
/as Bu imzayı ekler. Birincil imza yoksa, bu imza bunun yerine birincil imza yapılır.
CertTemplateName/c İmzalama sertifikası için Sertifika Şablonu Adını (Bir Microsoft uzantısı) belirtir.
CSPName/csp Özel anahtar kapsayıcısını içeren şifreleme hizmeti sağlayıcısını (CSP) belirtir.
/d Desc İmzalı içeriğin açıklamasını belirtir.
/dg Yol İmzalanacak özeti ve imzalanmamış PKCS7 dosyalarını oluşturur. Çıkış özeti ve PKCS7 dosyaları Path>\<FileName>.dig ve <Path>\<FileName>.p7u<. Ek bir XML dosyası çıktısı almak için /dxmlkullanın.
/di Yol İmzalı özeti imzasız PKCS7 dosyasına alarak imzayı oluşturur. Giriş imzalı özet ve imzasız PKCS7 dosyaları <Path>\<FileName>.dig.signed ve <Path>\<FileName>.p7uolmalıdır.
dll/dlib Özeti imzalamak için AuthenticodeDigestSign işlevini uygulayan DLL'yi belirtir. Bu seçenek, SignTool'un /dg, /dsve /di seçenekleriyle ayrı olarak kullanılmasıyla eşdeğerdir. Bu seçenek üçünü de tek bir atomik işlem olarak çağırır.
dosya adı/dmdf /dg seçeneğiyle kullanıldığında, dosyanın içeriğini değişiklik yapmadan AuthenticodeDigestSign işlevine geçirir.
/ds Yalnızca özeti imzalar. Giriş dosyası, /dg seçeneği tarafından oluşturulan özet olmalıdır. Çıkış dosyası: <Dosya>.signed.
URL/du İmzalanan içeriğin genişletilmiş açıklaması için Tekdüzen Kaynak Bulucu (URL) belirtir.
/dxml /dg seçeneğiyle kullanıldığında bir XML dosyası oluşturur. Çıkış dosyası: <Path>\<FileName>.dig.xml.
SignCertFile/f Bir dosyadaki imzalama sertifikasını belirtir. Dosya Kişisel Bilgi Değişimi (PFX) biçimindeyse ve parolayla korunuyorsa, parolayı belirtmek için /p seçeneğini kullanın. Dosya özel anahtar içermiyorsa, CSP ve özel anahtar kapsayıcı adını belirtmek için /csp ve /kc seçeneklerini kullanın.
/fd alg Dosya imzaları oluşturmak için kullanılacak dosya özeti algoritmasını belirtir. Not: İmzalama sırasında /fd seçeneği belirtilmezse, komut bir hata oluşturur.
/fd certHash "certHash" dizesinin belirtilmesi, komutun imzalama sertifikasında belirtilen algoritmayı kullanmasına neden olur. Not: İmzalama sırasında /fd seçeneği belirtilmezse, komut bir hata oluşturur.
/i VerenAdı İmzalama sertifikası verenin adını belirtir. Bu değer, veren adının tamamının alt dizesi olabilir.
PrivKeyContainerName/kc Özel anahtar kapsayıcısının adını belirtir.
/n SubjectName İmzalama sertifikasının konusunun adını belirtir. Bu değer, konu adının tamamının alt dizesi olabilir.
/nph Destekleniyorsa, yürütülebilir dosyalar için sayfa karmalarını gizler. Varsayılan değer, SIGNTOOL_PAGE_HASHES ortam değişkeni ve wintrust.dll sürümü tarafından belirlenir. Pe olmayan dosyalar için bu seçenek yoksayılır.
parola/p PFX dosyasını açarken kullanılacak parolayı belirtir. PFX dosyası belirtmek için /f seçeneğini kullanın.
/p7 Yol Belirtilen her içerik dosyası için Ortak Anahtar Şifreleme Standartları (PKCS) #7 dosyasının üretildiğini belirtir. PKCS #7 dosyaları , .p7 >\<dosya adı><yolu olarak adlandırılır.
/p7ce Değer İmzalı PKCS #7 içeriği için seçenekleri belirtir. İmzalı içeriği PKCS #7 dosyasına eklemek için DeğerEmbedded olarak 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çeneği belirtilmezse, imzalı içerik varsayılan olarak eklenir.
/p7co <OID> İmzalı 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 zincirleme yapması gereken kök sertifikanın konusunun adını belirtir. Bu değer, kök sertifikanın konu adının tamamının alt dizesi olabilir.
/s StoreName Komut sertifikayı ararken açılacak depoyu belirtir. Bu seçenek belirtilmezse, komut My deposunu açar.
/sha1 Karma İmzalama sertifikasının SHA1 karması belirtir. SHA1 karması, birden çok sertifika kalan seçenekler tarafından belirtilen ölçütleri karşıladığında yaygın olarak kullanılır.
/sm Komutun kullanıcı deposu yerine makine deposu kullandığını belirtir.
URL/t Zaman damgası sunucusunun URL'sini belirtir. Bu seçenek veya /tr belirtilmezse, imzalanan dosya zaman damgalı değildir. Zaman damgası başarısız olursa, komut bir uyarı oluşturur. Bu seçenek /tr seçeneğiyle kullanılamaz.
/td alg RFC 3161 zaman damgası sunucusu tarafından kullanılan bir özet algoritması istemek için /tr seçeneğiyle kullanılır. Not: Zaman damgalama sırasında /td belirtilmezse, komut bir hata oluşturur.
URL/tr RFC 3161 zaman damgası sunucusunun URL'sini belirtir. Bu seçenek veya /t belirtilmezse, imzalanan dosya zaman damgalı değildir. Zaman damgası başarısız olursa, komut bir uyarı oluşturur. Bu seçenek /t seçeneğiyle kullanılamaz.
/u Kullanım İmzalama sertifikasında bulunması gereken gelişmiş anahtar kullanımını (EKU) belirtir. Kullanım değeri OID veya dize tarafından belirtilebilir. Varsayılan kullanım Code Signing veya 1.3.6.1.5.5.7.3.3.
/uw Windows System Component Verification veya 1.3.6.1.4.1.311.10.3.6kullanımını belirtir.

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

Zaman damgası komut seçenekleri

Aşağıdaki tabloda, timestamp komutuyla kullanılabilecek seçenekler listelenmiştir:

Zaman damgası seçeneği Açıklama
/p7 Zaman, PKCS #7 dosyalarını damgalar.
URL/t Zaman damgası sunucusunun URL'sini belirtir. Zaman damgalı olan dosyanın daha önce imzalanmış olması gerekir. /t veya /tr seçeneği gereklidir.
/td alg RFC 3161 zaman damgası sunucusu tarafından kullanılan bir özet algoritması istemek için /tr seçeneğiyle kullanılır. Not: Zaman damgalama sırasında /td belirtilmezse, komut bir uyarı oluşturur.
dizin/tp Zaman, dizinimzayı damgalar.
URL/tr RFC 3161 zaman damgası sunucusunun URL'sini belirtir. Zaman damgalı olan dosyanın daha önce imzalanmış olması gerekir. /tr veya /t seçeneği gereklidir.

Komut seçeneklerini doğrulama

Aşağıdaki tabloda, verify komutuyla kullanılabilecek seçenekler listelenmiştir:

Doğrula seçeneği Açıklama
/a Dosyayı doğrulamak için tüm yöntemlerin kullanılabileceğini belirtir. İlk olarak, SignTool katalog veritabanlarında arama yapıp dosyanın bir katalogda oturum açıp açmadığını belirler. Dosya herhangi bir katalogda oturum açmadıysa SignTool, dosyanın eklenmiş imzasını doğrulamayı dener. Katalogda oturum açmış veya açılmamış olabilecek dosyaları doğrularken bu seçeneği kullanmanızı öneririz. İmzalı veya imzalı olmayabilecek dosyalara örnek olarak Windows dosyaları veya sürücüleri verilebilir.
/ad Varsayılan katalog veritabanını kullanarak 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.
CatDBGUID/ag GUID tarafından tanımlanan katalog veritabanındaki kataloğu bulur.
CatFile/c Katalog dosyasını ada göre belirtir.
/d Açıklama ve açıklama URL'sini yazdırır. Windows Vista ve önceki sürümler: Bu seçenek desteklenmez.
/ds Dizini İmzayı belirli bir konumda doğrular.
/hash{SHA1|SHA256} Katalogda dosya ararken kullanılacak isteğe bağlı karma algoritmayı belirtir.
/kp x64 çekirdek modu sürücü imzalama ilkesini kullanarak doğrulamayı gerçekleştirir.
/ms Birden çok doğrulama semantiği kullanır. Bu davranış, WinVerifyTrust çağrısının varsayılanıdır.
/o Sürüm dosyayı işletim sistemi sürümüne göre doğrular. Sürüm parametresi şu biçimdedir: <PlatformID>:<VerMajor>. VerMinor><. BuildNumber><. /o seçeneğinin kullanılmasını öneririz. /o belirtilmezse, SignTool beklenmeyen sonuçlar döndürebilir. Örneğin, /oeklemezseniz, eski bir işletim sisteminde doğru şekilde doğru doğrulayan sistem katalogları daha yeni bir işletim sisteminde doğru doğrulanamayabilir.
/p7 PKCS #7 dosyalarını doğrular. PKCS #7 doğrulaması için mevcut ilke kullanılmaz. SignTool imzayı denetler ve imzalama sertifikası için bir zincir oluşturur.
/pa Varsayılan Kimlik Doğrulama İlkesi'nin kullanıldığını belirtir. /pa seçeneği belirtilmezse, SignTool Windows Sürücü Doğrulama İlkesi'ni kullanır. Bu seçenek catdb seçenekleriyle kullanılamaz.
/pg policyGUID GUID'ye göre bir doğrulama ilkesi belirtir. GUID, doğrulama ilkesinin ActionID karşılık gelir. Bu seçenek catdb seçenekleriyle kullanılamaz.
/ph Sayfa karması değerlerini yazdırın ve doğrulayın. Windows Vista ve önceki sürümler: Bu seçenek desteklenmez.
/r RootSubjectName İmzalama sertifikasının zincirleme yapması gereken kök sertifikanın konusunun adını belirtir. Bu değer, kök sertifikanın konu adının tamamının alt dizesi olabilir.
/tw İmza zaman damgalı değilse komutun bir uyarı oluşturduğunu belirtir.

SignTool verify komutu, imzalama sertifikasının güvenilir bir yetkili tarafından verilip verilmediğini, imzalama sertifikasının iptal edilip edilmediğini ve isteğe bağlı olarak, imzalama sertifikasının belirli bir ilke için geçerli olup olmadığını belirler.

SignTool verify komutu, /a, /ad, /as, /agveya /cgibi bir katalog arama seçeneği belirtilmediği sürece eklenmiş imza durumunu döndürür.

Dönüş değeri

SignTool, 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, katalog dosyasını MyCatalogFileName.cat sistem bileşenine ve sürücü veritabanına ekler. /u seçeneği, MyCatalogFileName.catadlı mevcut 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ı pfx dosyasında depolanan bir sertifikayı kullanarak 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 damgalar. Dosyayı imzalamak için kullanılan sertifika bir PFX dosyasında depolanır.

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

Aşağıdaki komut, My deposunda bulunan ve konu adı My Company Certificateolan 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 zamanı, dijital olarak imzalanmış bir dosyayı damgalar.

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

Aşağıdaki komut zamanı, RFC 3161 zaman damgası sunucusu kullanarak bir dosyayı 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, katalogda oturum açabilen bir sistem dosyasını doğrular.

signtool verify /a SystemFile.dll

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

signtool verify /c MyCatalog.cat SystemFile.dll

Aşağıdaki komut, imzayı bir dosyadan tamamen kaldırır.

signtool remove /s MyFile.exe

Ayrıca bkz.

Dosya İmzalarken SignTool Kullanma

Kod imzalama giriş