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 , timestamp veya 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 /g kullanmı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 /dxml kullanı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 , /ds ve /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.6 kullanı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, /o eklemezseniz, 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
, /ag
veya /c
gibi 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 Certificate
olan 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.cat
adlı 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ş