Siber Güvenlik

Windows 11’de Otomatik İmzalı SSL Sertifikaları Oluşturma Rehberi

Yerel geliştirme ortamlarında güvenli bağlantıları etkinleştirmek, günümüzün modern web projeleri için temel bir gerekliliktir. Tarayıcıların HTTPS protokolüne olan katı yaklaşımı, geliştiricilerin dahi yerel sunucularında güvenli iletişim kurmasını zorunlu kılıyor. Bu noktada, Windows 11 otomatik imzalı SSL sertifikaları, geliştiricilere ve test uzmanlarına dış bir sertifika yetkilisine ihtiyaç duymadan kendi yerel ortamlarını güvenli hale getirme esnekliği sunar. Bu rehber, kişisel kullanım için SSL/TLS şifrelemesi sağlamanın pratik yollarını adım adım açıklıyor.

SSL Sertifikaları Neden Önemli ve Otomatik İmzalı Farkı

Güvenli Yuva Katmanı (SSL) ve halefi Taşıma Katmanı Güvenliği (TLS) protokolleri, internet üzerindeki veri akışının şifrelenmesini ve kimlik doğrulamasını sağlar. Bir web sitesi adresinin başındaki “HTTPS” ifadesi, bu şifreleme katmanının devrede olduğunu gösterir. Kullanıcıların hassas bilgilerini (şifreler, kredi kartı bilgileri) korumak, veri bütünlüğünü sağlamak ve sitenin kimliğini doğrulamak için SSL/TLS sertifikaları olmazsa olmazdır. Sertifikalar, bir üçüncü taraf sertifika yetkilisi (CA) tarafından imzalandığında, tarayıcılar tarafından otomatik olarak güvenilir kabul edilir ve herhangi bir uyarı vermez.

Otomatik imzalı SSL sertifikaları ise, adından da anlaşılacağı gibi, herhangi bir dış sertifika yetkilisi tarafından değil, doğrudan kullanıcının kendisi tarafından imzalanır. Bu durum, sertifikanın dünya genelindeki tarayıcılar için otomatik olarak güvenilir olmadığı anlamına gelir. Ancak yerel geliştirme veya test ortamlarında, genel geçerli bir güvene ihtiyaç duyulmadığından, otomatik imzalı sertifikalar pratik bir çözüm sunar. Özellikle Windows 11 işletim sisteminde çalışan yerel sunucularda HTTPS bağlantılarını test etmek, çeşitli tarayıcı uyarılarından kaçınmak ve güvenlik odaklı geliştirme pratiklerini benimsemek için bu tür sertifikalar kritik rol oynar.

PowerShell ile Yeni Bir Otomatik İmzalı Sertifika Oluşturma

Windows 11’de otomatik imzalı bir SSL sertifikası oluşturmanın en etkili yolu PowerShell kullanmaktır. Bu işlem için öncelikle yönetici haklarına sahip bir PowerShell oturumu başlatmak gerekir. New-SelfSignedCertificate cmdlet’i, gerekli parametrelerle birlikte kullanılarak kolayca yeni bir sertifika oluşturulmasını sağlar. İşte temel bir örnek ve komutun açıklaması:

$sertifika = New-SelfSignedCertificate
-Subject “CN=localhost”
-CertStoreLocation “Cert:LocalMachineMy”
-FriendlyName “Yerel Geliştirme Sertifikası”
-DnsName “localhost”, “127.0.0.1”
-NotAfter (Get-Date).AddYears(1)
-KeyAlgorithm RSA
-KeyLength 2048
-HashAlgorithm SHA256
-KeyUsage DigitalSignature, KeyEncipherment
-TextExtension @(“2.5.29.37={text}1.3.6.1.5.5.7.3.1”)

  • -Subject “CN=localhost”: Sertifikanın kime ait olduğunu belirtir. Genellikle yerel geliştirme için localhost kullanılır.
  • -CertStoreLocation “Cert:LocalMachineMy”: Sertifikanın depolanacağı yeri belirler. Bu, kişisel sertifikaların saklandığı varsayılan depodur.
  • -FriendlyName “Yerel Geliştirme Sertifikası”: Sertifikaya kolayca tanınabilir bir isim verir.
  • -DnsName “localhost”, “127.0.0.1”: Sertifikanın hangi alan adları veya IP adresleri için geçerli olacağını tanımlar.
  • -NotAfter (Get-Date).AddYears(1): Sertifikanın geçerlilik süresini bir yıl olarak ayarlar. Bu süre isteğe göre uzatılabilir veya kısaltılabilir.
  • -KeyAlgorithm RSA -KeyLength 2048 -HashAlgorithm SHA256: Anahtar ve hash algoritması parametreleridir. Güvenlik için güncel ve güçlü algoritmalar tercih edilmelidir.
  • -KeyUsage DigitalSignature, KeyEncipherment: Sertifikanın kullanım amacını belirtir.
  • -TextExtension: Sertifikanın Extended Key Usage (Genişletilmiş Anahtar Kullanımı) özelliğini tanımlar. 1.3.6.1.5.5.7.3.1 değeri sunucu kimlik doğrulaması için standart bir OID’dir.

Bu komut çalıştırıldığında, PowerShell yeni bir sertifika oluşturacak ve bunu yerel makinenizin “Kişisel” sertifika deposuna kaydedecektir. Oluşturulan sertifika nesnesi $sertifika değişkenine atanır ve sonraki adımlarda kullanılabilir.

Oluşturulan Sertifikayı Güvenilir Kök Depoya Ekleme

Oluşturduğunuz otomatik imzalı sertifikanın yerel ortamınızdaki tarayıcılar ve uygulamalar tarafından güvenilir kabul edilmesi için, onu “Güvenilen Kök Sertifika Yetkilileri” deposuna taşımanız gerekir. Bu işlem, Windows’un sertifikayı doğrulama zincirinin bir parçası olarak görmesini sağlar ve tarayıcı uyarılarını ortadan kaldırır. Bu taşıma işlemi de PowerShell ile oldukça basittir:

Move-Item -Path $sertifika.PSPath -Destination “Cert:LocalMachineRoot”

Bu komut, bir önceki adımda oluşturulan sertifikayı Cert:LocalMachineMy konumundan Cert:LocalMachineRoot konumuna taşır. Böylece, sisteminiz ve onun üzerinde çalışan uygulamalar bu sertifikaya güvenmeye başlar. Bu adımı tamamladıktan sonra, tarayıcılarınızı yeniden başlatarak veya sisteminizi yenileyerek sertifikanın etkinleştiğini kontrol edebilirsiniz. Sertifikayı başka bir makineye taşımak isterseniz, Export-Certificate ve Import-Certificate cmdlet’lerini kullanarak sertifikayı bir dosyaya aktarabilir ve hedef makinede içe aktarabilirsiniz. Bu işlem genellikle özel anahtarı da dışa aktarmayı gerektirir ve bu durumda bir parola belirlemeniz önemlidir.

Alternatif olarak, sertifikaları Manuel olarak yönetmek için “Çalıştır” kutusuna mmc yazıp Microsoft Yönetim Konsolu’nu açabilir, “Dosya” menüsünden “Ek Bileşen Ekle/Kaldır” seçeneğini kullanarak “Sertifikalar” ek bileşenini “Bilgisayar hesabı” için ekleyebilirsiniz. Buradan, “Kişisel” sertifikalarınızdan istediğiniz sertifikayı kesip “Güvenilen Kök Sertifika Yetkilileri” deposuna yapıştırarak da aynı işlemi gerçekleştirebilirsiniz.

Yerel Sunucularda Sertifika Kullanımı ve Karşılaşılan Sorunlar

Otomatik imzalı sertifikayı “Güvenilen Kök Sertifika Yetkilileri” deposuna ekledikten sonra, sıra onu yerel web sunucunuzla (örneğin, IIS veya geliştirme amaçlı bir Kestrel sunucusu) ilişkilendirmeye gelir. Internet Information Services (IIS) kullanıyorsanız, sertifikayı belirli bir siteye bağlamak için netsh http add sslcert komutunu kullanabilirsiniz. Bu komut, belirtilen IP adresine ve porta SSL sertifikasını atar:

netsh http add sslcert ipport=0.0.0.0:44300 certhash=$sertifika.Thumbprint appid={00000000-0000-0000-0000-000000000000} certstorename=Root

Burada ipport, HTTPS trafiğini dinleyecek IP adresi ve port numarasıdır (örneğin, 0.0.0.0:44300 genellikle tüm yerel IP’leri kapsar). certhash, oluşturduğunuz sertifikanın benzersiz parmak izidir ve $sertifika.Thumbprint değişkeninden alınabilir. appid, herhangi bir geçerli GUID değeri olabilir ve uygulamanızı tanımlamak için kullanılır. certstorename=Root ise sertifikanın hangi depoda aranacağını belirtir. Bu işlemi tamamladıktan sonra, yerel web sitenize https://localhost:44300 gibi bir adres üzerinden güvenli bir şekilde erişebilirsiniz.

Yerel sunucularda sertifika kullanımı sırasında bazı yaygın sorunlar ortaya çıkabilir. En sık karşılaşılanlardan biri, sertifikanın doğru şekilde güvenilir kök depoya eklenmemiş olmasıdır. Bu durumda tarayıcılar hala güvenlik uyarıları vermeye devam eder. Diğer bir sorun ise, port çakışmaları veya Windows Güvenlik Duvarı ayarlarının HTTPS trafiğini engellemesidir. Bu tür durumlarda, portun başka bir uygulama tarafından kullanılmadığından emin olmak ve güvenlik duvarı kurallarını kontrol etmek, sorun giderme adımları arasında yer alır. Ayrıca, netsh komutunu kullanırken Thumbprint değerinin doğru olduğundan ve appid için geçerli bir GUID kullandığınızdan emin olmak, başarılı bir bağlama için kritik öneme sahiptir.

Otomatik İmzalı Sertifikaların Sınırları ve Güvenlik Yaklaşımı

Otomatik imzalı SSL sertifikaları, yerel geliştirme ve test ortamları için güçlü bir araç sunsa da, bunların kullanım alanları ve güvenlik sınırları iyi anlaşılmalıdır. Bu sertifikalar, halka açık, internet üzerinden erişilebilir web siteleri veya hassas kurumsal verilerin işlendiği üretim sistemleri için kesinlikle uygun değildir. Temel neden, otomatik imzalı sertifikaların bir üçüncü taraf CA tarafından doğrulanmamasıdır; bu, kullanıcıların sertifikanın gerçekte kim tarafından verildiğini doğrulayamayacağı anlamına gelir. Bu durum, ortadaki adam (Man-in-the-Middle – MITM) saldırılarına karşı savunmasızlık yaratabilir, zira kötü niyetli bir aktör, benzer bir otomatik imzalı sertifika oluşturarak kullanıcıları kandırabilir.

Bu nedenle, üretim ortamlarında veya genel kullanıma açık herhangi bir serviste her zaman saygın bir Sertifika Yetkilisi tarafından imzalanmış sertifikalar kullanılmalıdır. Let’s Encrypt gibi ücretsiz seçenekler veya çeşitli ticari CA’lar, bu ihtiyacı karşılamak için güvenilir çözümler sunar. Otomatik imzalı sertifikaları kullanırken bile bazı güvenlik önlemleri almak mümkündür. Örneğin, sertifikaları dışa aktarırken her zaman güçlü parolalar kullanın ve artık kullanmadığınız eski veya gereksiz sertifikaları sisteminizden kaldırın. Ayrıca, sertifikanın geçerli olduğu alan adlarını (DnsName) mümkün olduğunca spesifik tutarak sertifikanın yetki alanını sınırlamak, potansiyel kötüye kullanım riskini azaltabilir. Unutmamak gerekir ki, güvenlik bir katmanlar bütünüdür ve her bileşenin doğru kullanılması, genel güvenliği artırır.

Sık Sorulan Sorular

Otomatik imzalı SSL sertifikaları ne için kullanılır?

Otomatik imzalı SSL sertifikaları, genellikle yerel geliştirme, test ortamları ve şirket içi uygulamalar için HTTPS bağlantıları sağlamak amacıyla kullanılır. Dış bir sertifika yetkilisine ihtiyaç duymazlar.

Otomatik imzalı sertifikalar güvenli midir?

Yerel ve kontrollü ortamlarda, veri şifrelemesi sağladıkları için güvenlidirler. Ancak genel internet siteleri için uygun değildirler, çünkü bir üçüncü taraf tarafından doğrulanmadıkları için kamusal güvenilirliğe sahip değillerdir.

Oluşturulan otomatik imzalı sertifikayı nasıl kaldırabilirim?

Windows'un Microsoft Yönetim Konsolu (MMC) aracılığıyla Sertifikalar ek bileşenini kullanarak veya PowerShell'deki <code>Remove-Item</code> cmdlet'i ile sertifikayı "Güvenilen Kök Sertifika Yetkilileri" deposundan silebilirsiniz.

Otomatik imzalı bir sertifikayı halka açık web sitemde kullanabilir miyim?

Hayır, kesinlikle kullanmamalısınız. Otomatik imzalı sertifikalar, tarayıcılar tarafından güvenilir kabul edilmez ve ziyaretçilerinize güvenlik uyarıları gösterir. Üretim ortamları için Let's Encrypt gibi ücretsiz veya ticari sertifika yetkililerini tercih etmelisiniz.

Özlem Özen

Merhaba, ben Özlem Özen. İçerik üreticisi olarak dijital dünyada bilgi, deneyim ve ilham verici içerikleri insanlarla buluşturmayı hedefliyorum. Sosyal medya, yaşam, kişisel gelişim, güncel trendler ve ilgi duyduğum farklı konular üzerine içerikler üreterek takipçilerime değer katmaya çalışıyorum. İçerik üretimini yalnızca paylaşım yapmak olarak değil, insanlarla anlamlı bir bağ kurmanın bir yolu olarak görüyorum. Bu nedenle hazırladığım her içerikte samimiyet, güvenilirlik ve fayda sağlamayı ön planda tutuyorum. Sürekli öğrenmeye, kendimi geliştirmeye ve değişen dijital dünyaya uyum sağlamaya önem veriyorum. Amacım; bilgi veren, düşündüren ve ilham kaynağı olan içeriklerle daha geniş kitlelere ulaşmak ve dijital platformlarda kalıcı bir değer oluşturmak. Üretmeye, öğrenmeye ve paylaşmaya duyduğum tutkuyla içerik yolculuğuma devam ediyorum.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu