Windows Server 2022 IIS 10 üzerinde win-acme ile ücretsiz Let's Encrypt SSL sertifikası kurulumu, DNS-01 doğrulaması ve otomatik yenileme rehberi.

Windows Server 2022 IIS 10 üzerinde win-acme ile ücretsiz Let's Encrypt SSL sertifikası kurulumu, DNS-01 doğrulaması ve otomatik yenileme rehberi

Windows Server 2022 IIS 10 üzerinde win-acme ile ücretsiz Let's Encrypt SSL sertifikası kurulumu, DNS-01 doğrulaması ve otomatik yenileme rehberi.

Posted on Kasım 09, 2026 by Şaban ÇİÇEK
Windows Server 2022 IIS 10 üzerinde win-acme ile ücretsiz Let's Encrypt SSL sertifikası kurulumu, DNS-01 doğrulaması ve otomatik yenileme rehberi.

Windows Server 2022 IIS 10 Üzerinde Let's Encrypt ile Ücretsiz SSL Sertifikası Kurulumu: win-acme Rehberi

Windows Server 2022 ve IIS 10 üzerinde Let's Encrypt kullanarak ücretsiz SSL/TLS sertifikası oluşturmayı, win-acme ile HTTP-01 ve DNS-01 doğrulaması yapmayı, HTTPS binding yapılandırmasını ve otomatik sertifika yenileme işlemlerini adım adım inceleyeceğiz.

Yazar: Şaban Çiçek

Kategori: Windows Server, IIS, SSL/TLS, Sistem Yönetimi

1. SSL/TLS ve Let's Encrypt Nedir?

SSL/TLS, istemci ile web sunucusu arasındaki iletişimin şifrelenmesini sağlayan güvenlik teknolojisidir. Günümüzde HTTPS bağlantılarında SSL yerine modern TLS protokolleri kullanılmaktadır.

Bir web sitesine HTTPS üzerinden bağlanıldığında tarayıcı, sunucunun sertifikasını doğrular ve güvenli bir bağlantı oluşturur.

Bu süreç sayesinde:

  • İstemci ve sunucu arasındaki trafik şifrelenir.
  • İletişimin bütünlüğü korunur.
  • Sunucunun alan adı kimliği doğrulanabilir.
  • Verilerin ağ üzerinde okunması veya değiştirilmesi zorlaştırılır.

Let's Encrypt Nedir?

Let's Encrypt, halka açık alan adları için ücretsiz TLS sertifikaları sağlayan bir sertifika otoritesidir (Certificate Authority).

Let's Encrypt, ACME protokolünü kullanarak alan adı sahipliğini doğrular ve sertifika oluşturma işlemini otomatikleştirir.

Windows Server ortamında ACME istemcisi olarak win-acme kullanılabilir.

Bilgi: Let's Encrypt sertifikalarının geçerlilik süreleri ve yenileme politikaları zaman içerisinde değişebilir. Bu nedenle sabit bir süreye güvenmek yerine sertifikanın gerçek bitiş tarihi kontrol edilmeli ve otomatik yenileme yapılandırılmalıdır.

2. Laboratuvar Ortamı ve Gereksinimler

Bu rehberde aşağıdaki örnek sunucu ortamını kullanacağız.

BileşenÖrnek Değer
İşletim SistemiWindows Server 2022
Web SunucusuIIS 10
Sunucu AdıWEB01
Yerel IP192.168.1.20
Örnek Domainweb.example.com
ACME İstemcisiwin-acme
HTTP Portu80/TCP
HTTPS Portu443/TCP
Önemli: web.example.com yalnızca dokümantasyon amacıyla kullanılan örnek alan adıdır. Let's Encrypt sertifikası almak için DNS yönetimini kontrol ettiğiniz gerçek bir alan adı kullanmalısınız. Let's Encrypt, .local gibi dahili alan adlarına genel güvenilir sertifika düzenlemez.

Kuruluma başlamadan önce aşağıdaki gereksinimleri kontrol edelim:

  • Windows Server 2022 üzerinde yönetici yetkisi
  • IIS Web Server rolü
  • Alan adının DNS kayıtlarına erişim
  • HTTP-01 için internetten TCP 80 erişimi
  • DNS-01 için DNS TXT kaydı oluşturma yetkisi
  • Sunucunun Let's Encrypt servislerine HTTPS erişimi

3. IIS 10 Kurulumu ve Web Sitesi Hazırlığı

İlk olarak Windows Server üzerinde IIS rolünün kurulu olup olmadığını kontrol edelim.

Get-WindowsFeature Web-Server

Rol kurulu değilse PowerShell'i yönetici olarak açıp aşağıdaki komutu çalıştıralım:

Install-WindowsFeature `
  -Name Web-Server `
  -IncludeManagementTools

Kurulum sonrasında IIS Manager konsolunu açalım:

inetmgr

IIS servis durumunu kontrol etme

Get-Service W3SVC,WAS

Servislerin çalışır durumda olması beklenir.

Web sitesi klasörü oluşturma

New-Item `
  -Path "C:\inetpub\WebSite" `
  -ItemType Directory `
  -Force

Test amaçlı bir HTML sayfası oluşturalım:

@'
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="UTF-8">
<title>IIS SSL Test</title>
</head>
<body>
<h1>IIS Web Sunucusu Calisiyor</h1>
</body>
</html>
'@ | Set-Content `
  -Path "C:\inetpub\WebSite\index.html" `
  -Encoding UTF8

IIS sitesi oluşturma

Import-Module WebAdministration

New-Website `
  -Name "KurumsalWeb" `
  -PhysicalPath "C:\inetpub\WebSite" `
  -Port 80 `
  -HostHeader "web.example.com"

Bu komut, HTTP üzerinden çalışan örnek bir IIS web sitesi oluşturur.

Mevcut IIS sitelerini listelemek için:

Get-Website |
Format-Table Name,State,PhysicalPath,Bindings
Not: Aynı IP, port ve host header kombinasyonunda başka bir IIS binding bulunmamalıdır. Ayrıca site klasörünün IIS uygulama havuzu kimliği tarafından okunabilir olması gerekir.

4. DNS ve Port Kontrolleri

Let's Encrypt sertifikası oluşturmadan önce alan adının doğru sunucuya yönlendiğini doğrulamamız gerekir.

DNS A kaydını kontrol etme

nslookup web.example.com 8.8.8.8

Alternatif olarak PowerShell kullanabiliriz:

Resolve-DnsName `
  -Name web.example.com `
  -Type A `
  -Server 8.8.8.8

HTTP-01 doğrulamasında alan adı, doğrulama isteğini karşılayacak sunucuya veya uygun şekilde yapılandırılmış reverse proxy'ye yönlenmelidir.

Port 80 ve 443 kontrolü

Test-NetConnection `
  -ComputerName web.example.com `
  -Port 80
Test-NetConnection `
  -ComputerName web.example.com `
  -Port 443

Bu testler mevcut bilgisayardan bağlantıyı kontrol eder. İnternetten erişilebilirliği kesin olarak doğrulamak için farklı bir dış ağdan da test yapılmalıdır.

Windows Firewall kuralları

Mevcut kuralları kontrol edelim:

Get-NetFirewallRule `
  -DisplayGroup "World Wide Web Services (HTTP)" `
  -ErrorAction SilentlyContinue

Gerekli olduğunda HTTP için kural oluşturabiliriz:

New-NetFirewallRule `
  -DisplayName "IIS HTTP 80" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 80 `
  -Action Allow

HTTPS için:

New-NetFirewallRule `
  -DisplayName "IIS HTTPS 443" `
  -Direction Inbound `
  -Protocol TCP `
  -LocalPort 443 `
  -Action Allow
Güvenlik: Firewall kurallarını oluşturmadan önce mevcut ağ mimarisini kontrol edin. Sunucu bir NAT, WAF veya reverse proxy arkasındaysa dış erişim ve yönlendirme kuralları ayrıca yapılandırılmalıdır.

5. win-acme İndirme ve Kurulum

win-acme, Windows ortamlarında Let's Encrypt ve diğer ACME uyumlu sertifika otoriteleriyle sertifika oluşturmayı ve yenilemeyi sağlayan bir istemcidir.

Resmi proje sitesi:

https://www.win-acme.com/

GitHub sürümleri:

win-acme GitHub Releases

ADIM 1

Windows Server için uygun güncel win-acme paketini resmi kaynaktan indirelim.

ADIM 2

İndirilen ZIP arşivini aşağıdaki klasöre çıkaralım:

C:\Tools\win-acme

ADIM 3

PowerShell'i yönetici olarak açalım:

cd C:\Tools\win-acme

.\wacs.exe

win-acme interaktif menüsü açılacaktır.

Menü seçenekleri kullanılan win-acme sürümüne göre değişebilir. Bu nedenle yalnızca tuş harflerine güvenmek yerine ekranda gösterilen açıklamaları takip etmeliyiz.

Öneri: win-acme uygulamasını kalıcı bir klasörde tutun. Kurulum sonrasında bu klasörü silmeyin veya taşımayın. Otomatik yenileme görevi uygulamanın dosya yoluna ihtiyaç duyabilir.

6. HTTP-01 ile SSL Sertifikası Oluşturma

HTTP-01, Let's Encrypt tarafından desteklenen alan adı doğrulama yöntemlerinden biridir.

Bu yöntemde sertifika otoritesi, alan adı üzerinden belirli bir doğrulama dosyasına HTTP isteği gönderir.

Doğrulama adresi genel olarak aşağıdaki yapıya sahiptir:

http://web.example.com/.well-known/acme-challenge/TOKEN

HTTP-01 doğrulamasının temel gereksinimi, alan adının TCP 80 üzerinden doğrulama isteğine yanıt verebilmesidir.

Adım adım HTTP-01 işlemi

ADIM 1

win-acme uygulamasını çalıştıralım:

cd C:\Tools\win-acme

.\wacs.exe

ADIM 2

IIS sitesinden sertifika oluşturma seçeneğini seçelim.

ADIM 3

Listeden KurumsalWeb sitesini ve sertifika oluşturulacak host adını seçelim.

ADIM 4

Doğrulama yöntemi olarak HTTP-01 kullanacak uygun seçeneği belirleyelim.

ADIM 5

Sertifika depolama ve IIS kurulum seçeneklerini kontrol edelim.

win-acme, yapılandırmaya bağlı olarak sertifikayı Windows Certificate Store'a kaydedebilir ve IIS HTTPS binding işlemini gerçekleştirebilir.

Başarılı işlem: Alan adı doğrulaması tamamlandığında sertifika oluşturulur. IIS kurulum adımı seçilmişse uygun HTTPS binding de yapılandırılabilir.

HTTP-01 ne zaman tercih edilmeli?

  • Web sitesi internete açıksa
  • TCP 80 erişimi sağlanabiliyorsa
  • IIS sitesi doğrudan doğrulama isteğine yanıt verebiliyorsa
  • DNS API entegrasyonu bulunmuyorsa
Önemli: HTTP-01 yöntemi wildcard sertifikalar için kullanılamaz. *.example.com gibi wildcard sertifikalar için DNS-01 doğrulaması gereklidir.

7. DNS-01 ile SSL Sertifikası Oluşturma

DNS-01 yöntemi, özellikle HTTP portu dışarıya açık olmayan sunucularda ve wildcard sertifikalarda kullanılır.

Bu yöntemde Let's Encrypt, alan adının DNS bölgesinde belirli bir TXT kaydı bulunmasını ister.

DNS-01 doğrulama mantığı

Örnek alan adımız:

web.example.com

Doğrulama TXT kaydı:

_acme-challenge.web.example.com

win-acme, doğrulama sırasında benzersiz bir TXT değeri üretir.

Örnek bir değer:

EXAMPLE_ACME_VALIDATION_TOKEN

Bu yalnızca gösterim amaçlıdır. Gerçek DNS kaydına win-acme tarafından üretilen değeri yazmalısınız.

Adım adım DNS-01 doğrulaması

ADIM 1

win-acme uygulamasını çalıştıralım:

.\wacs.exe

ADIM 2

Gerekirse gelişmiş sertifika oluşturma seçeneğini kullanarak alan adını belirleyelim.

ADIM 3

Doğrulama yöntemi olarak DNS-01 seçelim.

ADIM 4

Manuel DNS doğrulamasını seçtiğimizde win-acme bizden bir TXT kaydı oluşturmamızı isteyecektir.

DNS yönetim paneline girerek kaydı oluşturalım.

AlanDeğer
Kayıt TürüTXT
Host_acme-challenge.web
Değerwin-acme tarafından verilen token
TTLDNS sağlayıcısının desteklediği uygun değer

DNS paneline göre Host alanına tam kayıt adı veya yalnızca bölgeye göreli ad yazılması gerekebilir.

TXT kaydını doğrulama

Windows PowerShell üzerinden:

Resolve-DnsName `
  -Name "_acme-challenge.web.example.com" `
  -Type TXT `
  -Server 8.8.8.8

Alternatif olarak:

nslookup -type=TXT `
  _acme-challenge.web.example.com 8.8.8.8

TXT kaydının doğru şekilde yayımlandığını gördükten sonra win-acme ekranında devam edebiliriz.

Bilgi: Genel DNS çözücülerinin kaydı görmesi yararlıdır ancak kesin doğrulama için yetkili DNS sunucularının da doğru TXT kaydını döndürmesi gerekir. DNS yayılımı ve önbellekleme nedeniyle gecikmeler yaşanabilir.

Wildcard sertifika örneği

Aşağıdaki alan adları için:

example.com
*.example.com

DNS-01 doğrulaması kullanılmalıdır.

Wildcard sertifika, tek seviyeli alt alan adlarını kapsar. Örneğin *.example.com sertifikası, example.com kök alan adını kendiliğinden kapsamaz.

Her iki alan adının sertifikaya dahil edilmesi isteniyorsa ikisi de sertifika isteğinde belirtilmelidir.

Manuel DNS ile otomatik yenileme farkı

Kritik: Manuel DNS-01 doğrulamasıyla sertifika alınabilir. Ancak her yenilemede yeni TXT değeri gerektiğinden, tam otomatik yenileme için DNS API entegrasyonu, desteklenen DNS eklentisi veya uygun bir DNS otomasyon mekanizması kurulmalıdır.

Cloudflare gibi API desteği sunan DNS sağlayıcılarında win-acme ile uyumlu DNS doğrulama eklentileri değerlendirilebilir.

API anahtarları yalnızca gerekli DNS kayıtlarını düzenleyebilecek minimum yetkiyle oluşturulmalı ve güvenli biçimde saklanmalıdır.

8. IIS HTTPS Binding Yapılandırması

Sertifika oluşturulduktan sonra web sitesinin HTTPS üzerinden yayın yapabilmesi için IIS binding yapılandırması gerekir.

win-acme bu işlemi otomatik gerçekleştirmiş olabilir. Önce mevcut durumu kontrol edelim.

Import-Module WebAdministration

Get-WebBinding -Name "KurumsalWeb"

Grafik arayüzden HTTPS binding

  1. IIS Manager konsolunu açın.
  2. Sites bölümünden KurumsalWeb sitesini seçin.
  3. Sağ menüden Bindings seçeneğine tıklayın.
  4. Add seçeneğini kullanın.
  5. Type olarak https seçin.
  6. Port değerini 443 olarak belirleyin.
  7. Host name alanına web.example.com yazın.
  8. Birden fazla HTTPS sitesi aynı IP üzerinde çalışıyorsa SNI seçeneğini değerlendirin.
  9. SSL certificate listesinden doğru sertifikayı seçin.
  10. OK ile işlemi tamamlayın.

PowerShell ile binding oluşturma

Henüz HTTPS binding bulunmuyorsa:

New-WebBinding `
  -Name "KurumsalWeb" `
  -Protocol https `
  -Port 443 `
  -HostHeader "web.example.com" `
  -SslFlags 1

Bu komut HTTPS binding oluşturur; sertifikayı otomatik olarak atamaz.

Sertifikayı Windows Certificate Store üzerinde kontrol edelim:

Get-ChildItem Cert:\LocalMachine\My |
Select-Object Subject,Thumbprint,NotAfter

Doğru sertifikanın thumbprint değerini belirledikten sonra:

$thumbprint = "SERTIFIKA_THUMBPRINT"

$binding = Get-WebBinding `
  -Name "KurumsalWeb" `
  -Protocol https `
  -Port 443 `
  -HostHeader "web.example.com"

$binding.AddSslCertificate(
  $thumbprint,
  "My"
)

Thumbprint alanındaki örnek metni gerçek sertifikanın thumbprint değeriyle değiştirmelisiniz.

Dikkat: IIS HTTPS binding ayarlarını değiştirirken mevcut siteleri ve SNI yapılandırmasını kontrol edin. Yanlış sertifika eşleştirmesi diğer web sitelerinde sertifika hatasına neden olabilir.

9. SSL Sertifikası Doğrulama

Sertifika kurulumunun tamamlanması, tarayıcının mutlaka güvenli bağlantı göstereceği anlamına gelmez.

Sertifikanın alan adı, geçerlilik süresi, sertifika zinciri ve IIS binding ayarları kontrol edilmelidir.

Tarayıcı üzerinden kontrol

Aşağıdaki adresi açalım:

https://web.example.com

Tarayıcı üzerinden sertifika ayrıntılarını inceleyelim.

  • Sertifika geçerli mi?
  • Alan adı sertifikayla eşleşiyor mu?
  • Sertifika zinciri güvenilir mi?
  • Geçerlilik süresi dolmuş mu?
  • Sayfada HTTP üzerinden yüklenen içerik var mı?

PowerShell ile HTTPS bağlantı testi

Invoke-WebRequest `
  -Uri "https://web.example.com" `
  -UseBasicParsing

Bağlantı başarılı olduğunda HTTP yanıtı alınır. HTTP 200 dışındaki yanıtlar her zaman TLS hatası anlamına gelmez.

Sunucu sertifikalarını listeleme

Get-ChildItem Cert:\LocalMachine\My |
Select-Object Subject,Issuer,NotAfter,Thumbprint

certutil ile sertifika doğrulama

Sertifikayı DER veya Base64 biçiminde dışa aktardıktan sonra:

certutil -verify "C:\Temp\website.cer"

Bu komut sertifika zinciri ve ilgili doğrulama kontrollerini gerçekleştirmek için kullanılabilir.

Dışarıdan yayınlanan HTTPS hizmetinin tamamını test etmek için tarayıcı ve bağımsız TLS test araçları da kullanılmalıdır.

10. Let's Encrypt Otomatik Sertifika Yenileme

Let's Encrypt sertifikalarının düzenli olarak yenilenmesi gerekir. win-acme, uygun şekilde yapılandırıldığında yenileme işlemlerini Windows Task Scheduler üzerinden otomatik çalıştırabilir.

Task Scheduler kontrolü

Windows üzerinde görev zamanlayıcıyı açalım:

taskschd.msc

Task Scheduler Library içerisinde win-acme tarafından oluşturulan yenileme görevini arayalım.

Görev adı win-acme sürümüne ve kurulum ayarlarına göre değişebilir.

PowerShell ile görev kontrolü

Get-ScheduledTask |
Where-Object {
  $_.TaskName -match "win-acme|wacs"
} |
Select-Object TaskName,State,TaskPath

Yenileme yapılandırmasını inceleme

cd C:\Tools\win-acme

.\wacs.exe

Menüden mevcut yenileme kayıtlarını yönetme seçeneğini açarak sertifikaları kontrol edebiliriz.

Komut satırından yenileme kontrolü

.\wacs.exe --renew

Bu komut yenileme koşulları sağlanan sertifikalar için yenileme işlemlerini değerlendirir.

İşlem sonucunda ilgili log kayıtlarını kontrol etmeliyiz.

Önemli: win-acme yenileme görevinin bulunması tek başına yeterli değildir. DNS doğrulama otomasyonu, sertifika deposu izinleri, IIS binding güncellemesi ve görev hesabının yetkileri de kontrol edilmelidir.

Otomatik yenileme testi

Üretim sertifikalarında gereksiz zorunlu yenileme denemeleri Let's Encrypt hız sınırlarına takılabilir.

Bu nedenle yenileme testlerini mümkün olduğunca ACME staging ortamında veya win-acme tarafından sunulan uygun test seçenekleriyle gerçekleştirmek gerekir.

11. IIS Üzerinde TLS Güvenlik Yapılandırması

HTTPS bağlantısının çalışması güvenliğin yalnızca ilk adımıdır. Sunucuda kullanılan TLS protokolleri ve şifreleme algoritmaları da değerlendirilmelidir.

Önerilen yaklaşım

  • TLS 1.2 desteğini koruyun.
  • Desteklenen sistemlerde TLS 1.3 kullanımını değerlendirin.
  • SSL 2.0 ve SSL 3.0 gibi eski protokolleri kullanmayın.
  • TLS 1.0 ve TLS 1.1 desteğini uyumluluk analizi sonrasında devre dışı bırakın.
  • Güçlü şifreleme algoritmaları tercih edin.
  • Sunucu ve Windows güncellemelerini düzenli uygulayın.
  • Sertifika özel anahtarına erişimi sınırlandırın.

Schannel yapılandırmasını inceleme

Get-ChildItem `
  "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" `
  -ErrorAction SilentlyContinue

Bu komut yapılandırılmış protokol kayıtlarını gösterir. Kayıt bulunmaması, protokolün kesin olarak kapalı olduğu anlamına gelmez; işletim sisteminin varsayılan davranışı geçerli olabilir.

HTTP'den HTTPS'ye yönlendirme

HTTP bağlantılarının HTTPS'ye yönlendirilmesi önerilir.

IIS üzerinde bu işlem URL Rewrite modülü veya uygun reverse proxy yapılandırmasıyla gerçekleştirilebilir.

URL Rewrite kullanılıyorsa örnek kural:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="HTTPS Redirect"
              stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}"
                 pattern="off" />
          </conditions>
          <action type="Redirect"
                  url="https://{HTTP_HOST}/{R:1}"
                  redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
Bilgi: Bu örnek web.config yapılandırmasıdır. IIS URL Rewrite modülünün kurulu olması gerekir. Reverse proxy veya SSL offloading kullanılan ortamlarda HTTPS algılama koşulu ayrıca uyarlanmalıdır. ACME HTTP-01 doğrulama yolunun yönlendirmeden etkilenmediği test edilmelidir.

12. Yaygın SSL Hataları ve Çözümleri

12.1 Sertifika kuruldu ancak tarayıcı güvenli değil diyor

Bu sorunun birkaç olası nedeni vardır:

  • Tarayıcı eski sertifika bilgisini önbellekten kullanıyor olabilir.
  • IIS üzerinde yanlış sertifika bağlı olabilir.
  • Sertifika alan adıyla eşleşmiyor olabilir.
  • Sertifika zinciri eksik olabilir.
  • Web sayfasında HTTP üzerinden yüklenen içerik bulunabilir.

Öncelikle gizli pencere veya farklı bir tarayıcıyla test yapalım.

Ardından IIS binding ve sertifika bilgilerini kontrol edelim.

Get-WebBinding -Protocol https

12.2 HTTP-01 doğrulaması başarısız oluyor

Olası nedenler:

  • TCP 80 internetten erişilemiyor.
  • DNS yanlış IP adresine yönleniyor.
  • NAT veya reverse proxy yanlış yapılandırılmış.
  • Web uygulaması doğrulama yolunu engelliyor.
  • Güvenlik duvarı bağlantıyı kesiyor.

DNS ve bağlantı kontrolü:

Resolve-DnsName web.example.com -Type A

Test-NetConnection web.example.com -Port 80

12.3 DNS-01 TXT kaydı bulunamıyor

Öncelikle TXT kaydını kontrol edelim:

Resolve-DnsName `
  "_acme-challenge.web.example.com" `
  -Type TXT `
  -Server 8.8.8.8

Kayıt bulunamıyorsa:

  • TXT kaydının doğru DNS bölgesinde oluşturulduğunu kontrol edin.
  • Host alanında alan adının iki kez yazılmadığından emin olun.
  • DNS önbelleğinin güncellenmesini bekleyin.
  • Yetkili DNS sunucularını kontrol edin.
  • Birden fazla TXT kaydı gerekiyorsa mevcut kayıtları yanlışlıkla silmeyin.

12.4 Sertifika yenileniyor ancak IIS eski sertifikayı kullanıyor

Öncelikle yeni sertifikanın Windows Certificate Store'a yüklenip yüklenmediğini kontrol edin.

Get-ChildItem Cert:\LocalMachine\My |
Sort-Object NotAfter -Descending |
Select-Object Subject,NotAfter,Thumbprint

Ardından IIS HTTPS binding üzerindeki sertifika eşleştirmesini inceleyin.

netsh http show sslcert

Bu komut HTTP.sys SSL sertifika eşleştirmelerini görüntüler. IIS üzerindeki site binding yapılandırması ayrıca kontrol edilmelidir.

12.5 Sertifika zinciri hatası

Sertifika zinciri hatalarında istemcinin güvenilir kök sertifika deposu, sunucunun sunduğu ara sertifikalar ve sertifikanın geçerlilik bilgileri kontrol edilmelidir.

Sertifika dosyası üzerinden:

certutil -verify "C:\Temp\website.cer"
Uyarı: Sertifika hatasını gidermek için tarayıcı doğrulamasını kapatmak veya TLS sertifika kontrolünü devre dışı bırakmak güvenli bir çözüm değildir.

13. PowerShell ile SSL Sertifikalarını İzleme

Birden fazla IIS web sitesi yöneten sistem yöneticileri için sertifika bitiş tarihlerinin merkezi olarak izlenmesi önemlidir.

30 gün içerisinde süresi dolacak sertifikaları listeleme

$limit = (Get-Date).AddDays(30)

Get-ChildItem Cert:\LocalMachine\My |
Where-Object {
  $_.NotAfter -le $limit
} |
Select-Object Subject,Issuer,NotAfter,Thumbprint |
Sort-Object NotAfter

Bu komut, LocalMachine\My deposundaki süresi dolmuş veya 30 gün içinde dolacak sertifikaları listeler.

Yalnızca geçerli ve yaklaşan sertifikaları listeleme

$now = Get-Date
$limit = $now.AddDays(30)

Get-ChildItem Cert:\LocalMachine\My |
Where-Object {
  $_.NotAfter -gt $now -and
  $_.NotAfter -le $limit
} |
Select-Object Subject,NotAfter,Thumbprint

CSV raporu oluşturma

Get-ChildItem Cert:\LocalMachine\My |
Select-Object Subject,Issuer,NotBefore,NotAfter,Thumbprint |
Export-Csv `
  -Path "C:\Windows\Temp\SSL-Sertifika-Raporu.csv" `
  -NoTypeInformation `
  -Encoding UTF8

Bu rapor, sunucunun kişisel sertifika deposundaki sertifikaları listeler. IIS binding'lerinde aktif olarak kullanılan sertifikaları belirlemek için binding eşleştirmeleri de kontrol edilmelidir.

SSL sertifikası bitiş tarihi neden izlenmeli?

Sertifikanın süresinin dolması kullanıcıların güvenlik uyarısı almasına, web servislerine erişimin kesilmesine ve API entegrasyonlarının başarısız olmasına neden olabilir.

Bu nedenle otomatik yenileme yapılandırılmış olsa bile sertifika bitiş tarihleri bağımsız bir izleme sistemiyle kontrol edilmelidir.

14. Sık Sorulan Sorular

Let's Encrypt SSL sertifikası ücretsiz mi?

Evet. Let's Encrypt, desteklenen alan adları için ücretsiz TLS sertifikaları sağlar.

Windows Server 2022 üzerinde Let's Encrypt kullanılabilir mi?

Evet. IIS 10 ve win-acme kullanılarak sertifika oluşturulabilir ve HTTPS yapılandırması yapılabilir.

win-acme sertifikaları otomatik yeniler mi?

Uygun doğrulama, kurulum ve zamanlanmış görev yapılandırması yapıldığında otomatik yenileme gerçekleştirilebilir. Manuel DNS doğrulaması ise ek otomasyon olmadan tam otomatik yenilemeye uygun değildir.

Port 80 kapalıysa sertifika alınabilir mi?

Evet. DNS-01 doğrulaması kullanılarak HTTP portu internete açılmadan sertifika alınabilir.

Wildcard SSL sertifikası oluşturulabilir mi?

Evet. DNS-01 doğrulamasıyla wildcard sertifika oluşturulabilir.

Sertifika oluşturulduğu halde neden güvenli değil uyarısı alınır?

Yanlış HTTPS binding, alan adı uyuşmazlığı, güvenilmeyen sertifika zinciri, süresi dolmuş sertifika veya karışık HTTP/HTTPS içerikleri bu uyarıya neden olabilir.

IIS yeniden başlatılmalı mı?

Çoğu sertifika binding değişikliğinde tüm IIS servislerini yeniden başlatmak gerekmez. Öncelikle binding güncellemesinin uygulandığını doğrulamak daha güvenlidir.

Let's Encrypt sertifikası şirket içi .local domain için kullanılabilir mi?

Hayır. Genel güvenilir Let's Encrypt sertifikaları .local gibi dahili adlar için düzenlenmez. Dahili hizmetlerde kurumsal AD CS altyapısı veya sahip olunan gerçek bir alan adının uygun alt alan adı kullanılabilir.

15. Sonuç

Bu makalede Windows Server 2022 üzerinde IIS 10 kullanarak Let's Encrypt SSL/TLS sertifikası oluşturmayı, win-acme ile HTTP-01 ve DNS-01 doğrulama yöntemlerini uygulamayı, HTTPS binding yapılandırmasını ve sertifika yenileme işlemlerini ele aldık.

Kurumsal ortamlarda sertifika yönetiminin yalnızca ilk kurulumdan ibaret olmadığını unutmamak gerekir.

Doğru DNS yapılandırması, güvenli TLS protokolleri, sertifika zinciri doğrulaması, otomatik yenileme ve düzenli izleme süreçleri bir bütün olarak değerlendirilmelidir.

Sonuç: IIS 10 ve win-acme kullanılarak Windows Server ortamlarında ücretsiz, güvenilir ve uygun şekilde yapılandırıldığında otomatik yenilenebilen HTTPS altyapısı oluşturulabilir.

Yararlı Kaynaklar

Şaban Çiçek

Bilgi Teknolojileri insanı

Windows Server | IIS | Active Directory | Siber Güvenlik

www.sabancicek.net

37 görüntülenme • 0 Yorum • Son Güncelleme: Kasım 09, 2026
Yorumlar 0
Yorum Yap

Henüz yorum yok. İlk yorumu siz yapın!