Installieren von IIS ohne unnötige Komponenten
Über den Server-Manager: Rollen und Features hinzufügen → Rollenbasiert → Ihr Server → Webserver (IIS).
Wählen Sie das Minimum für statische und einfache Websites:
- Webserver → Allgemeine HTTP-Features: Statischer Inhalt, Standarddokument, HTTP-Fehler;
- Integrität und Diagnose: HTTP-Protokollierung;
- Sicherheit: Anforderungsfilterung;
- Leistung: Komprimierung statischer Inhalte.
Wenn Sie ASP.NET benötigen, fügen Sie Anwendungsentwicklung (.NET-Erweiterbarkeit, ASP.NET, ISAPI) hinzu.
Entsprechende PowerShell-Befehle:
Install-WindowsFeature Web-Server, Web-Common-Http, Web-Default-Doc, Web-Http-Errors, `
Web-Http-Logging, Web-Filtering, Web-Stat-Compression -IncludeManagementTools
# If necessary:
# Install-WindowsFeature Web-Asp-Net45, Web-Net-Ext45, Web-ISAPI-Ext, Web-ISAPI-Filter
Überprüfen Sie http://localhost – die IIS-Startseite sollte angezeigt werden.
Generieren Sie eine CSR (Zertifikatsanforderung) direkt in IIS
Öffnen Sie den IIS-Manager (InetMgr.exe) → wählen Sie Ihren Server aus → Serverzertifikate.
Klicken Sie unter Aktionen auf Zertifikatsanforderung erstellen… und füllen Sie die Felder für den Distinguished Name aus:
— Common Name — FQDN der Website (z. B. example.ru oder *.example.ru für Wildcard);
— Organisation/OU/Stadt/Bundesland/Land — gemäß den Anforderungen der Zertifizierungsstelle (CA).
Wählen Sie einen Kryptografieanbieter und eine Schlüssellänge aus (empfohlen werden Microsoft RSA SChannel und 2048+ Bit).
Speichern Sie die CSR in einer Datei – sie beginnt mit —–BEGIN NEW CERTIFICATE REQUEST—–.
Senden Sie die CSR an Ihre Zertifizierungsstelle (kommerziell oder unternehmensintern). Wenn Sie AD CS verwenden, laden Sie das ausgestellte Zertifikat vom Webportal der Zertifizierungsstelle herunter.
Alternative zum Testen: selbstsigniertes Zertifikat über PowerShell New-SelfSignedCertificate. Geeignet für Testumgebungen, jedoch nicht für Produktionsstandorte.
Importieren eines Zertifikats in IIS (CER/PFX) und Formatnuancen
Kehren Sie zu Serverzertifikate zurück und klicken Sie auf Zertifikatsanforderung abschließen… – geben Sie das ausgestellte CER an.
Wenn Sie CRT + KEY haben, konvertieren Sie diese zunächst in PFX (ein kombinierter Container mit einem privaten Schlüssel). Am einfachsten geht dies mit openssl:
openssl pkcs12 -export -out target.pfx -inkey source.key -in source.crt
Oder konvertieren Sie CRT → CER (Base-64 X.509) vorübergehend direkt in Windows über „Exportieren“:
Wenn Sie PFX importieren, tun Sie dies am besten über das Snap-In Zertifikate (Lokaler Computer) → Persönlich. Microsoft bietet in seiner offiziellen Dokumentation detaillierte Anweisungen zum Importieren und Zuweisen eines Standortzertifikats.
Nach dem Abschluss der Zertifikatsanforderung wird das neue Zertifikat in der Liste angezeigt:
HTTPS an die Website binden (Bindungen)
Gehen Sie zu Websites, wählen Sie die Website aus → Bindungen bearbeiten…
Fügen Sie eine Bindung hinzu:
- Typ: https
- IP-Adresse: Alle nicht zugewiesenen (oder bestimmte)
- Port: 443
- Hostname: Der FQDN Ihrer Website
- SSL-Zertifikat: Wählen Sie das importierte Zertifikat aus
Aktivieren Sie für mehrere HTTPS-Websites auf einer einzigen IP-Adresse SNI (Require Server Name Indication).
Starten Sie die Website (oder den gesamten IIS) neu.
Überprüfen Sie in Ihrem Browser: das Schloss und das gültige Zertifikat für die Domain.
Es ist sinnvoll, die HTTP → HTTPS-Umleitung (URL-Umschreibung) sofort zu aktivieren – dazu gibt es eine separate Analyse in winitpro.
Öffnen Sie die Ports und testen Sie von außen
Vergessen Sie nicht, 80/443 in der internen Windows-Firewall und der externen Firewall/ACL beim Windows VPS-Anbieter zu öffnen:
New-NetFirewallRule -DisplayName "HTTP (80)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
Überprüfung vom Client-Rechner aus:
Test-NetConnection example.ru -Port 80
Test-NetConnection example.ru -Port 443
TcpTestSucceeded: True – Bindung und Verfügbarkeit bestätigt.
Häufige Fehler und schnelle Lösungen
- Zertifikat wird nicht in der Dropdown-Liste „Bindungen” angezeigt – wurde in „Aktueller Benutzer” statt in „Lokaler Computer → Persönlich” importiert oder ohne privaten Schlüssel. Importieren Sie PFX in „Lokaler Computer”.
- NET::ERR_CERT_COMMON_NAME_INVALID – CN/SAN stimmt nicht mit der Domäne im Hostnamen überein; erneut mit dem richtigen FQDN ausstellen.
- Nur HTTP wird geöffnet – keine HTTPS-Bindung oder 443 ist auf der externen Firewall geschlossen.
- Fehler beim Importieren von CRT – in CER oder PFX konvertieren (siehe oben).
- Mehrere Websites auf einer IP – Aktivieren Sie SNI in der Bindung und verwenden Sie unterschiedliche Hostnamen.
Spickzettel: IIS + Website + HTTPS in wenigen Minuten
# 1) Installing IIS with basic modules
Install-WindowsFeature Web-Server, Web-Common-Http, Web-Default-Doc, Web-Http-Errors, `
Web-Http-Logging, Web-Filtering, Web-Stat-Compression -IncludeManagementTools
# 2) Site catalog
New-Item -ItemType Directory -Path "D:\sites\example.ru\wwwroot" -Force | Out-Null
# 3) Website on HTTP
Import-Module WebAdministration
New-Website -Name "example.ru" -Port 80 -PhysicalPath "D:\sites\example.ru\wwwroot" -IPAddress "*" -HostHeader "example.ru"
# 4) Import certificate (example for PFX; specify your path/password)
# $pwd = ConvertTo-SecureString "PFXpassword" -AsPlainText -Force
# Import-PfxCertificate -FilePath "C:\certs\example.pfx" -CertStoreLocation Cert:\LocalMachine\My -Password $pwd
# $thumb = (Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*CN=example.ru*"}).Thumbprint
# 5) HTTPS binding (via netsh http)
# New-WebBinding -Name "example.ru" -Protocol https -Port 443 -HostHeader "example.ru"
# netsh http add sslcert hostnameport=example.ru:443 certhash=$thumb appid="{00112233-4455-6677-8899-AABBCCDDEEFF}"
# 6) Firewall
New-NetFirewallRule -DisplayName "HTTP (80)" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "HTTPS (443)" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow