Self-signed (kendinden imzalı) sertifika, bir sertifika otoritesi tarafından değil, sahibi tarafından kendi anahtarıyla imzalanan sertifikadır. Ücretsizdir ve birkaç saniyede oluşturulabilir. Peki yazılımlarınızı self-signed sertifikayla imzalamak "Bilinmeyen yayımcı" uyarısını kaldırır mı? Bu yazıda self-signed sertifikanın ne olduğunu, nasıl oluşturulduğunu, nerede işe yaradığını ve neden dışarıya dağıtılan yazılımlar için yeterli olmadığını anlatıyoruz.
Self-signed sertifika nedir?
Normal bir sertifikada sertifika otoritesi (CA), başvuranın kimliğini doğrular ve sertifikayı kendi imzasıyla onaylar. İşletim sistemleri bu CA'lara önceden güvendiği için sertifika otomatik olarak geçerli kabul edilir.
Self-signed sertifikada ise bu onay adımı yoktur: sertifikayı oluşturan kişi, onu kendi anahtarıyla imzalar. Sonuç olarak sertifikada istediğiniz adı yazabilirsiniz, ama kimse bu adın doğruluğunu onaylamamıştır. Bu yüzden Windows, macOS ve tarayıcılar self-signed sertifikalara varsayılan olarak güvenmez.
| Self-signed sertifika | CA'dan alınmış kod imzalama sertifikası | |
|---|---|---|
| Maliyet | Ücretsiz | Ücretli |
| Kimlik doğrulaması | Yok | CA şirket/kişi kimliğini doğrular |
| Windows'un güveni | Yok (elle eklenmedikçe) | Otomatik |
| Kullanıcının gördüğü yayımcı | "Bilinmeyen yayımcı" veya güvenilmeyen sertifika uyarısı | Doğrulanmış şirket adı |
| SmartScreen itibarı | Oluşmaz | Zamanla oluşur |
| Uygun kullanım | Test, iç ağ, kişisel betikler | Dışarıya dağıtılan yazılımlar |
PowerShell ile self-signed kod imzalama sertifikası oluşturma
Test veya şirket içi kullanım için Windows'ta yönetici olarak açılmış PowerShell'de:
$cert = New-SelfSignedCertificate -Type CodeSigningCert `
-Subject "CN=Test Kod Imzalama" `
-CertStoreLocation Cert:\CurrentUser\My `
-NotAfter (Get-Date).AddYears(2)
Bir PowerShell betiğini bu sertifikayla imzalamak için:
Set-AuthenticodeSignature -FilePath .\betik.ps1 -Certificate $cert
Bu aşamada imza teknik olarak oluşur, ancak Windows sertifikaya güvenmediği için imza durumu "UnknownError" ya da "güvenilmeyen kök sertifika" olarak görünür.
Şirket içinde güvenilir hale getirmek
Sertifikayı yalnızca kendi bilgisayarlarınızda kullanacaksanız, sertifikanın açık kısmını dışa aktarıp her bilgisayarda Güvenilen Kök Sertifika Yetkilileri ve Güvenilen Yayımcılar depolarına ekleyebilirsiniz. Kurumsal ağlarda bu işlem Grup İlkesi ile tüm bilgisayarlara dağıtılabilir. Özel anahtarı (.pfx) asla paylaşmayın.
Self-signed sertifika nerede işe yarar?
- Geliştirme ve test: İmzalama sürecinizi denemek, derleme betiklerinizi test etmek.
- Şirket içi PowerShell betikleri: Yürütme ilkesi
AllSignedolan kurumsal ortamlarda, sertifikanın güvenilir olarak dağıtıldığı bilgisayarlarda. - Kapalı ağlardaki iç uygulamalar: Tüm bilgisayarların sizin yönetiminizde olduğu ortamlarda.
Kurumsal ortamlarda daha düzenli bir çözüm, şirketin kendi iç sertifika otoritesini (ör. Active Directory Sertifika Hizmetleri) kurmaktır.
Self-signed sertifika neden dışarıya dağıtılan yazılımlar için yeterli değil?
- Kullanıcının bilgisayarı sertifikanıza güvenmez; "Bilinmeyen yayımcı" uyarısı kalkmaz.
- Windows SmartScreen, Akıllı Uygulama Denetimi ve antivirüs yazılımları imzayı güvenilir kabul etmez.
- Kullanıcılardan sertifikanızı "güvenilir kök" olarak eklemelerini istemek güvenlik açısından çok tehlikelidir ve profesyonel görünmez.
Yazılımınızı müşterilere veya internete dağıtıyorsanız, güvenilir bir sertifika otoritesinden alınmış bir kod imzalama sertifikası gerekir. Açık kaynak projeler için daha uygun fiyatlı seçenekler de vardır: açık kaynak projeler için kod imzalama.
Sıkça Sorulan Sorular
Self-signed sertifikayla imzalanan program SmartScreen'i geçer mi?
Hayır. SmartScreen, yayımcı itibarını yalnızca güvenilir CA'lardan alınmış sertifikalar için oluşturur. Self-signed imzalı bir program, imzasız bir programla aynı şekilde uyarı alır.
Let's Encrypt gibi ücretsiz kod imzalama sertifikası var mı?
Let's Encrypt yalnızca web siteleri için SSL/TLS sertifikası verir; kod imzalama sertifikası vermez. Windows'ta güvenilen kod imzalama sertifikaları ücretlidir.
Self-signed sertifikayla PowerShell betiği çalıştırabilir miyim?
Evet, sertifikayı betiğin çalışacağı bilgisayarda Güvenilen Kök ve Güvenilen Yayımcılar depolarına eklerseniz. Ayrıntılar: PowerShell ile kod imzalama.



