# IIS'te ücretsiz HTTPS sertifikasıyla web sitesi yayınlayın

> Windows Server'a IIS kurun, ana bilgisayar adı bağlamalarıyla site oluşturun, ASP.NET desteği ekleyin ve win-acme ile ücretsiz Let's Encrypt sertifikası alın.

Zorluk: Orta

Her Windows Server, Microsoft'un web sunucusu **IIS**'i içerir. ASP.NET ve ASP.NET Core uygulamalarını ve statik siteleri barındırır; ücretsiz **win-acme** istemcisiyle Let's Encrypt'ten sertifika alır ve bunları otomatik yeniler. Bu rehber bir Windows VPS veya VDS'i temiz kurulumdan çalışan bir HTTPS sitesine götürür.

## Başlamadan önce

- Uzak Masaüstü ile yönetici olarak ulaşabildiğiniz bir Windows sunucu; bkz. [Windows sunucuda ilk adımlar](/guides/windows-server-first-steps-rdp).
- **A kaydı** (ve `www`) sunucunun IP adresini gösteren bir alan adı; bkz. [alan adını sunucuya yönlendirme](/guides/point-domain-to-server). Sertifikalar ancak DNS sunucuyu gösterdiğinde verilebilir.
- İnternetten erişilebilen **80** ve **443** portları.

Örneklerde alan adı `example.com`'dur ve site dosyaları `C:\inetpub\example.com` içindedir.

## 1. adım: IIS'i kurun

PowerShell'i yönetici olarak açın:

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

Klasik **ASP.NET** (.NET Framework 4.x) ile yapılmış siteler için rol hizmetini de ekleyin:

```powershell
Install-WindowsFeature -Name Web-Asp-Net45
```

**ASP.NET Core** uygulamaları için IIS'ten **sonra** Microsoft'un .NET indirme sayfasından **.NET Hosting Bundle**'ı kurun, ardından IIS'i yeniden başlatın:

```text
net stop was /y
net start w3svc
```

Hosting Bundle'ı IIS'ten önce kurduysanız onarmak için yükleyicisini daha sonra yeniden çalıştırın.

**Doğrulama:** sunucuda `http://localhost` açıldığında IIS başlangıç sayfası görünür.

## 2. adım: Siteyi oluşturun

Klasörü, bir deneme sayfasını ve iki ana bilgisayar adı için bağlamalarıyla siteyi oluşturun:

```powershell
New-Item -ItemType Directory -Path "C:\inetpub\example.com"
Set-Content -Path "C:\inetpub\example.com\index.html" -Value "It works"
New-IISSite -Name "example.com" -PhysicalPath "C:\inetpub\example.com" -BindingInformation "*:80:example.com"
New-IISSiteBinding -Name "example.com" -BindingInformation "*:80:www.example.com" -Protocol http
```

Bağlama biçimi `IP:port:ana-bilgisayar-adı`'dır; `*` sunucunun tüm adresleri anlamına gelir. Bu site için ek bir IPv4 adresi kullanmak istiyorsanız `*` yerine o adresi yazın (bkz. [Windows Server'a ek IPv4 adresi ekleme](/guides/add-ipv4-address-windows)).

Güvenlik duvarının web trafiğine izin verdiğinden emin olun:

```powershell
New-NetFirewallRule -DisplayName "Web HTTP and HTTPS" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80,443 -Profile Any
```

**Doğrulama:** kendi bilgisayarınızdan `http://example.com` "It works" gösterir.

## 3. adım: win-acme ile ücretsiz sertifika alın

1. win-acme'nin güncel **x64 trimmed** sürümünü resmi web sitesinden indirin ve kalıcı bir klasöre açın, örneğin `C:\Program Files\win-acme`. Yenileme görevi bu klasörden çalışır; geçici bir klasör kullanmayın.
2. `wacs.exe` dosyasını yönetici olarak çalıştırın.
3. Ana menüde varsayılan ayarlarla sertifika oluşturmak için `N` seçin.
4. IIS siteleri listesinden `example.com` sitesini seçin ve bağlamalarda bulunan ana bilgisayar adlarını onaylayın.
5. İlk çalıştırmada hizmet koşullarını kabul edin ve süre dolumu bildirimleri için bir e-posta adresi girin.

win-acme alan adının denetiminin sizde olduğunu 80 portu üzerinden HTTP ile kanıtlar, sertifikayı indirir, ana bilgisayar adları için 443 portunda bir `https` bağlaması ekler ve yenilemeler için bir zamanlanmış görev oluşturur.

**Doğrulama:** `https://example.com` geçerli bir sertifikayla açılır ve **Task Scheduler** içinde bir win-acme yenileme görevi bulunur.

## 4. adım: Uygulamanızı yayınlayın

Yayınlanmış dosyalarınızı deneme sayfasının yerine `C:\inetpub\example.com` içine kopyalayın. ASP.NET Core uygulamaları `dotnet publish` ile yayınlanır ve 1. adımdaki Hosting Bundle'a ihtiyaç duyar. Her site kendi **uygulama havuzunda** çalışır; birden fazla site barındırıyorsanız IIS Manager › **Application Pools** altında her siteye bir ad verin.

Ziyaretçileri HTTP'den HTTPS'e yönlendirmek için Microsoft'un IIS için **URL Rewrite** modülünü kurun ve bir yönlendirme kuralı ekleyin ya da yönlendirmeyi uygulamanızda yapın.

## Sorun giderme

**win-acme doğrulamanın başarısız olduğunu bildiriyor.** `example.com` adresinin sunucuya çözümlendiğini (`Resolve-DnsName example.com`) ve `http://example.com` adresine dışarıdan 80 portuyla ulaşılabildiğini kontrol edin. Sitenin önündeki bir proxy veya CDN denetimi engelleyebilir.

**Her sayfa için HTTP Error 404.** Sitenin klasörü boş veya varsayılan belge eksik. Klasörü ve IIS Manager'daki **Default Document** ayarını kontrol edin.

**ASP.NET Core uygulamasında HTTP Error 500.19, 500.30 veya 502.5.** Genellikle Hosting Bundle veya bir yapılandırma ayarı eksiktir; bkz. [ASP.NET ve IIS hataları](/guides/aspnet-iis-errors).

**Tarayıcı başka bir sitenin sertifikasını gösteriyor.** Ana bilgisayar adının kendi sertifikasıyla bir `https` bağlaması yok. O site için win-acme'yi yeniden çalıştırın veya IIS Manager'daki bağlamaları kontrol edin.

## Sonraki adımlar

- Uygulama hatalarını giderin: [ASP.NET ve IIS hataları](/guides/aspnet-iis-errors).
- Ticari sertifikalar (OV, EV, wildcard): [SSL sertifikası sipariş etme, doğrulama ve kurma](/guides/install-ssl-certificate).

## Sık sorulan sorular

### Her HTTPS sitesi için ayrı bir IP adresine ihtiyacım var mı?

Hayır. IIS Server Name Indication'ı (SNI) destekler; böylece kendi sertifikası olan birçok site tek bir IP adresini paylaşabilir ve tüm güncel tarayıcılar bunu destekler.

### Sertifika nasıl yenilenir?

win-acme, sertifikaları süreleri dolmadan yenileyen ve IIS bağlamalarını güncelleyen bir zamanlanmış görev oluşturur. Görev oradan çalıştığı için win-acme klasörünü açtığınız yerde tutun.

### Doğrulama neden başarısız oluyor?

Genellikle alan adı henüz sunucuyu göstermiyordur ya da 80 portu bir güvenlik duvarında kapalıdır. Let's Encrypt'in HTTP denetimi alan adınıza 80 portundan bağlanır.

### IIS'te PHP siteleri barındırabilir miyim?

Evet, Windows için PHP ve FastCGI ile; ancak PHP yazılımlarının çoğu Linux'ta test edilir. WordPress ve benzeri PHP siteleri için bir Linux sunucu veya web hosting hizmetimiz daha kolay seçimdir.

---

Kaynak: <https://hyperdc.com/tr/guides/products/iis-website-with-https>\
Son güncelleme: 2026-10-15
