İçeriğe geç
Yeni Türkiye'de İlk! — Cloud OV/EV Kod İmzamala Sertifikaları !
  1. Ana Sayfa
  2. Blog
  3. Windows İmzalama
  4. SignTool Error: "No certificates were found that met all the given criteria" Çözümü
Windows İmzalama 4 dk okuma

SignTool Error: "No certificates were found that met all the given criteria" Çözümü

SignTool "No certificates were found that met all the given criteria" hatası neden çıkar? /debug ile teşhis, 7 yaygın neden ve her biri için çözüm.

SignTool kod imzalama hatası çözümü

Kod imzalarken karşılaşılan en yaygın hatalardan biri şudur:

SignTool Error: No certificates were found that met all the given criteria.

Hata, SignTool'un verdiğiniz ölçütlere uyan kullanılabilir bir sertifika bulamadığını söyler. Sertifikanız bilgisayarda olsa bile bu hatayı alabilirsiniz; çünkü SignTool yalnızca özel anahtarı erişilebilir, süresi geçerli ve kod imzalamaya uygun sertifikaları dikkate alır. Aşağıda hatanın nedenlerini sık görülme sırasına göre ve her birinin çözümüyle birlikte bulacaksınız.

1. Adım: SignTool'a neden reddettiğini sorun

Tahmin yürütmeden önce aynı komutu /debug parametresiyle çalıştırın. SignTool her sertifikayı listeler ve hangisini neden elediğini yazar:

signtool sign /debug /fd sha256 /a dosyaniz.exe

Çıktıda "After ... filter, 0 certs were left" gibi satırlar görürsünüz. Sertifikaların hangi filtrede elendiği, aşağıdaki nedenlerden hangisinin sizi etkilediğini gösterir.

Ardından sertifikalarınızı listeleyin:

# PowerShell: kod imzalamaya uygun sertifikalar (geçerli kullanıcı)
Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | Format-List Subject, Thumbprint, NotAfter, HasPrivateKey

# Komut istemi: kişisel sertifika deposu
certutil -user -store My

Neden 1: Sertifika bilgisayar deposunda, SignTool kullanıcı deposuna bakıyor

SignTool varsayılan olarak geçerli kullanıcının "Kişisel" (My) deposunda arar. Sertifikanız Yerel Bilgisayar deposuna yüklendiyse bulunamaz.

Çözüm: Komuta /sm ekleyin:

signtool sign /sm /fd sha256 /sha1 PARMAK_IZI dosyaniz.exe

Neden 2: Özel anahtar yok (sadece .cer dosyası yüklenmiş)

İmzalamak için sertifikanın özel anahtarına erişim gerekir. Yalnızca .cer/.crt dosyasını içe aktardıysanız sertifika listede görünür ama imzalamada kullanılamaz. PowerShell çıktısında HasPrivateKey : False yazıyorsa sorun budur.

Çözüm: Anahtar bir USB token'da veya bulut HSM'de ise ilgili istemcinin (aşağıya bakın) çalıştığından emin olun. Dosya tabanlı eski bir sertifikanız varsa .pfx dosyasını /f ve /p ile kullanın. Not: Haziran 2023'ten sonra verilen kod imzalama sertifikalarında özel anahtar dışa aktarılamaz; anahtar her zaman token veya HSM'de kalır.

Neden 3: Token veya bulut imzalama istemcisi bağlı değil

Güncel sertifikalarda anahtar bir USB token'da veya bulutta durur. İstemci kapalıysa sertifika Windows deposunda görünmez ya da özel anahtarına ulaşılamaz.

  • Certum SimplySign: SimplySign Desktop uygulamasını açın ve telefondaki SimplySign uygulamasından aldığınız kodla oturum açın. Oturum açıkken sanal kart takılı görünür ve sertifika depoya gelir. Kurulum ayrıntıları: SimplySign Desktop rehberi.
  • USB token (SafeNet vb.): Token'ın takılı olduğunu ve üreticinin istemci yazılımının (ör. SafeNet Authentication Client) kurulu olduğunu kontrol edin.
  • Bulut HSM / Key Vault tabanlı çözümler: Bu servisler genellikle kendi imzalama aracını veya SignTool için özel bir eklentiyi (dlib) kullanır; sertifika Windows deposunda hiç görünmeyebilir. Sağlayıcınızın belgelediği komutu kullanın.

Neden 4: /n veya /sha1 değeri sertifikayla eşleşmiyor

  • /n "Şirket Adı" sertifikanın konu (Subject) adındaki CN ile eşleşmelidir. Türkçe karakterler, "A.Ş." gibi kısaltmalar ve boşluklar sık hata kaynağıdır.
  • /sha1 ile verdiğiniz parmak izi (thumbprint) boşluksuz ve eksiksiz olmalıdır. Sertifika yönetiminden kopyalarken başa görünmez bir karakter eklenebilir; değeri elle yeniden yazın.

En güvenilir yöntem parmak izini kullanmaktır; birden fazla sertifikanız olduğunda da SignTool'un yanlış sertifikayı seçmesini önler.

Neden 5: Sertifikanın süresi dolmuş veya kod imzalamaya uygun değil

SignTool süresi geçmiş sertifikaları ve "Kod İmzalama" (Code Signing) amaçlı olmayan sertifikaları (ör. SSL sertifikası, e-imza sertifikası) eler. Nitelikli elektronik imza (e-imza) sertifikaları da bu nedenle yazılım imzalamak için kullanılamaz.

Çözüm: Sertifika ayrıntılarında "Amaçlar" bölümünde Kod İmzalama yazdığını ve geçerlilik tarihini kontrol edin. Süresi dolduysa yeni bir kod imzalama sertifikası almanız gerekir.

Neden 6: Farklı kullanıcı veya CI/CD hizmet hesabı

Komut Visual Studio'da, Jenkins'te, GitHub Actions runner'ında veya bir Windows hizmetinde çalışıyorsa, sertifikayı yüklediğiniz kullanıcıdan farklı bir hesapla çalışıyor olabilir. O hesabın kullanıcı deposunda sertifika yoktur.

Çözüm: Sertifikayı hizmet hesabının deposuna yükleyin, yerel bilgisayar deposunu /sm ile kullanın ya da bulut imzalama sağlayıcınızın CI/CD entegrasyonunu tercih edin.

Neden 7: Yanlış SignTool sürümü veya /fd eksik

Çok eski SignTool sürümleri güncel sertifikalar ve SHA-256 ile sorun çıkarabilir. Windows SDK'nın güncel sürümündeki SignTool'u kullanın ve komuta her zaman /fd sha256 ekleyin.

Doğru çalışan örnek komut

signtool sign /sha1 PARMAK_IZI /fd sha256 /tr http://time.certum.pl /td sha256 /d "Uygulama Adı" dosyaniz.exe

signtool verify /pa /v dosyaniz.exe

/tr ve /td RFC 3161 zaman damgası ekler; sertifikanızın süresi dolsa bile imza geçerli kalır. Farklı bir CA kullanıyorsanız o CA'nın zaman damgası adresini yazın. Tüm adımlar için: SignTool ile EXE imzalama rehberi.

Hızlı kontrol listesi

KontrolNasıl?
Sertifika depoda mı?certutil -user -store My (bilgisayar deposu için -user olmadan)
Özel anahtar var mı?PowerShell'de HasPrivateKey : True
Token / SimplySign bağlı mı?İstemci açık ve oturum açılmış olmalı
Amaç "Kod İmzalama" mı?Sertifika ayrıntıları → Amaçlar
Süresi geçerli mi?NotAfter tarihi
Doğru hesap mı?CI/CD'de hizmet hesabını kontrol edin
Neden elendi?signtool sign /debug ...

Sıkça Sorulan Sorular

Sertifika "certmgr.msc"de görünüyor ama yine de hata alıyorum, neden?

En sık iki neden vardır: özel anahtar erişilebilir değildir (token veya SimplySign oturumu kapalı) ya da SignTool farklı bir depoya bakmaktadır. /debug çıktısı hangisi olduğunu gösterir.

/a parametresi ne işe yarar?

/a, SignTool'un uygun sertifikalar arasından en iyisini otomatik seçmesini sağlar. Tek sertifikanız varsa pratiktir; birden fazla sertifikanız varsa yanlış seçimi önlemek için /sha1 kullanın.

E-imza (nitelikli elektronik sertifika) ile program imzalayabilir miyim?

Hayır. E-imza sertifikaları belge imzalamak içindir ve "Kod İmzalama" amacını taşımaz. Windows programları için Microsoft'un güvendiği bir CA'dan alınmış kod imzalama sertifikası gerekir.

Bu yazıyı paylaşın
Yazar Ali Yiğit
Sertifikalar

Önerilen kod imzalama sertifikaları

Tüm ürünler
Certum Cloud OV

Certum Standard Cloud Kod İmzalama

1-5 İş Günü Kuruluş doğrulaması

  • OV Kuruluş veya Bireysel Doğrulama
  • Şirketlere ve şahıs işletmelerine (şahıs firması) verilir
  • Mobil Cihazdan İmzalama (iOS/Android)
$256,00 %30 indirim $180,00 /yıl
Certum Cloud EV

Certum Cloud EV Kod İmzalama

1-7 İş Günü Kernel sürücü & WHQL

  • EV Genişletilmiş Doğrulama
  • Microsoft SmartScreen Uyumlu İmza
  • Mobil Cihazdan İmzalama (iOS/Android)
$650,00 %35 indirim $420,00 /yıl
Sectigo Cloud OV

Sectigo Cloud OV Kod İmzalama

1-3 İş Günü Kuruluş doğrulaması

  • OV Kuruluş Doğrulaması
  • Microsoft Authenticode (.exe, .dll, .msi, .cab, .ocx, .sys)
  • Java JAR İmzalama
$429,12 %10 indirim $385,00 /yıl
Yorumlar

Yorumlar

Sorularınızı ve deneyimlerinizi paylaşın.

Henüz yorum yapılmamış. İlk yorumu siz yapın.

Yorum yazın

Destek

Sorunuz mu var?

Kod imzalama sertifikası seçimi ve kurulumu için uzman ekibimize ulaşın.