Certyfikaty SSL na Windows Server — IIS + Let's Encrypt krok po kroku [2026]
W 2026 roku strona bez HTTPS to nie tylko brak kłódki w przeglądarce — to utrata pozycji w Google, ostrzeżenia dla użytkowników i ryzyko RODO. Google od lat traktuje HTTPS jako sygnał rankingowy, Chrome oznacza witryny HTTP jako „Niezabezpieczone" jeszcze przed wpisaniem jakichkolwiek danych, a unijne przepisy o ochronie danych osobowych (RODO/GDPR) wprost wymagają odpowiedniego zabezpieczenia przesyłanych informacji. Jeśli administrujesz serwerem z systemem Windows Server i hostingujesz witryny przez Internet Information Services (IIS), ten przewodnik pokaże Ci krok po kroku, jak skonfigurować certyfikat SSL na Windows Server — zarówno darmowy za pomocą Let's Encrypt i narzędzia win-acme, jak i komercyjny. Omówimy też hartowanie protokołów TLS, testowanie konfiguracji w SSL Labs oraz najczęstsze błędy. Gotowy? Zaczynamy.
Dlaczego SSL to dziś absolutny obowiązek — nie opcja
Jeszcze kilka lat temu certyfikat SSL był domeną sklepów internetowych i banków. Dziś każda witryna bez HTTPS ponosi realne konsekwencje w czterech obszarach:
1. Ranking w Google
Google oficjalnie potwierdziło HTTPS jako czynnik rankingowy w 2014 roku, a od tego czasu jego znaczenie sukcesywnie rosło. W 2026 roku strona HTTP jest już de facto zdyskwalifikowana w rywalizacji z konkurentami HTTPS w podobnej pozycji domeny. Jeśli Twój serwer hostuje firmowe strony, blogi czy API — brak SSL oznacza handicap SEO, który żadna treść nie nadrobi.
2. Ostrzeżenia przeglądarek = odpływ użytkowników
Chrome, Firefox i Edge wyświetlają komunikat „Ta witryna jest niezabezpieczona" dla wszystkich stron HTTP, na których pojawia się jakikolwiek formularz. Badania pokazują, że ponad 85% użytkowników opuszcza witrynę po zobaczeniu takiego ostrzeżenia. Dla strony logowania, panelu administracyjnego czy formularza kontaktowego brak SSL to bezpośrednia utrata leadów i klientów.
3. RODO i odpowiedzialność prawna
Rozporządzenie o Ochronie Danych Osobowych (RODO) wymaga stosowania „odpowiednich środków technicznych i organizacyjnych" dla ochrony danych. Przesyłanie danych osobowych przez nieszyfrowany protokół HTTP jest wprost sprzeczne z tą zasadą i może skutkować karami administracyjnymi nakładanymi przez Urząd Ochrony Danych Osobowych. Certyfikat SSL to minimum technicznej zgodności.
4. Bezpieczeństwo i zaufanie
TLS (Transport Layer Security) — następca SSL — szyfruje cały ruch między serwerem a przeglądarką, chroniąc przed atakami man-in-the-middle, podsłuchem i modyfikacją treści w drodze. Widoczna kłódka w pasku adresu to sygnał zaufania, który bezpośrednio przekłada się na współczynnik konwersji.
Rodzaje certyfikatów SSL — DV, OV, EV i Wildcard
Przed instalacją warto wiedzieć, jaki certyfikat wybrać. Różnią się poziomem weryfikacji, ceną i zastosowaniem.
| Typ certyfikatu | Weryfikacja | Czas wydania | Cena orientacyjna | Zastosowanie |
|---|
| DV (Domain Validation) | Tylko własność domeny | Minuty | 0–200 zł/rok | Blogi, strony firmowe, środowiska deweloperskie |
| OV (Organization Validation) | Własność domeny + weryfikacja firmy | 1–3 dni robocze | 300–800 zł/rok | Strony korporacyjne, portale B2B |
| EV (Extended Validation) | Pełna weryfikacja prawna firmy | 3–7 dni roboczych | 800–2 500 zł/rok | Banki, instytucje finansowe, duże sklepy |
| Wildcard DV | Własność domeny, obejmuje wszystkie subdomeny | Minuty (Let's Encrypt) lub godziny (komercyjny) | 0 (LE) / 400–1 200 zł/rok | Firmy z wieloma subdomenami (app.*, mail.*, api.*) |
| SAN/Multi-domain | DV lub OV, pokrywa wiele różnych domen | Minuty–dni | 500–1 500 zł/rok | Firmy zarządzające wieloma projektami |
Let's Encrypt — darmowy certyfikat DV dla każdego
Let's Encrypt to urząd certyfikacji (CA) non-profit, prowadzony przez Internet Security Research Group (ISRG) przy wsparciu Mozilli, Cisco i Electronic Frontier Foundation. Od 2015 roku wydał ponad 4 miliardy certyfikatów, rewolucjonizując dostępność HTTPS. Certyfikaty Let's Encrypt:
- są całkowicie bezpłatne — bez ukrytych opłat
- ważne przez 90 dni z możliwością automatycznego odnawiania
- obsługują walidację HTTP-01 i DNS-01
- nie wymagają konta ani subskrypcji
- są uznawane przez wszystkie główne przeglądarki i systemy operacyjne
Ograniczenia: Let's Encrypt wydaje wyłącznie certyfikaty DV — bez weryfikacji tożsamości organizacji. Dla środowisk wymagających OV lub EV (banki, instytucje regulowane) konieczny jest certyfikat komercyjny od DigiCert, Sectigo, GlobalSign lub Comodo.
Win-acme — klient ACME dla Windows Server i IIS
Na Linuksie standardowym narzędziem jest Certbot. Na Windows Server najlepszym odpowiednikiem jest win-acme (wcześniej letsencrypt-win-simple), projekt open-source dostępny na GitHubie. Win-acme obsługuje pełen protokół ACME v2, posiada wbudowaną integrację z IIS i automatycznie konfiguruje Harmonogram zadań Windows do cyklicznego odnawiania certyfikatów.
Główne cechy win-acme:
- Interfejs interaktywny (menu tekstowe) oraz tryb wiersza poleceń dla automatyzacji
- Automatyczne wykrywanie witryn IIS i ich bindingów
- Walidacja HTTP-01 (przez istniejącą witrynę IIS) i DNS-01 (przez wtyczki dla Cloudflare, Azure DNS, Route53, Gandi i innych)
- Instalacja certyfikatu bezpośrednio do Windows Certificate Store i powiązanie z IIS
- Obsługa certyfikatów wildcard przez DNS-01
- Eksport do PEM/PFX dla innych zastosowań (np. serwery SMTP, FTP)
- Zadanie odnawiające tworzone automatycznie w Task Scheduler
Instalacja win-acme i certyfikatu Let's Encrypt — krok po kroku
Wymagania wstępne
Przed instalacją upewnij się, że spełnione są następujące warunki:
- Windows Server 2016, 2019, 2022 lub 2025 z zainstalowaną rolą IIS
- Domena z rekordem A wskazującym na publiczny adres IP serwera
- Port 80 (HTTP) otwarty w zaporze ogniowej (wymagany do walidacji HTTP-01)
- Port 443 (HTTPS) otwarty w zaporze ogniowej
- Uprawnienia administratora lokalnego lub domenowego na serwerze
- .NET Framework 4.7.2 lub nowszy (wbudowany w Windows Server 2019+)
Krok 1: Pobranie i rozpakowanie win-acme
Wejdź na oficjalną stronę projektu: win-acme.com (lub repozytorium GitHub: github.com/win-acme/win-acme). Pobierz najnowsze archiwum ZIP — wybierz wersję wacs.exe dla x64 (dla standardowych serwerów 64-bitowych). Na dzień pisania artykułu aktualna wersja to 2.2.9.
Rozpakuj archiwum do dedykowanego folderu, np.:
C:\tools\win-acme\
Unikaj ścieżek z polskimi znakami lub spacjami — może to powodować problemy podczas automatycznego odnawiania.
Krok 2: Uruchomienie win-acme jako administrator
Otwórz wiersz poleceń lub PowerShell z uprawnieniami administratora (prawym przyciskiem myszy → „Uruchom jako administrator"). Przejdź do folderu z win-acme:
cd C:\tools\win-acme
.\wacs.exe
Zostanie wyświetlone menu główne programu.
Krok 3: Wybór trybu tworzenia certyfikatu
W menu głównym wybierz opcję:
N: Create certificate (default settings)
To szybka ścieżka dla standardowej instalacji na IIS. Dla zaawansowanych opcji (wildcard, niestandardowe ścieżki, inne serwery) wybierz M: Create certificate (full options).
Krok 4: Wybór witryny IIS
Win-acme automatycznie odczyta listę witryn skonfigurowanych w IIS i wyświetli je numerycznie. Wybierz numer witryny, dla której chcesz wygenerować certyfikat. Program wykryje powiązane hostnamy (bindingi HTTP) i zaproponuje je jako nazwy domenowe dla certyfikatu.
Przykładowy widok:
IIS Sites:
1: Default Web Site (HTTP, port 80, hostname: www.twojafirma.pl)
2: API (HTTP, port 80, hostname: api.twojafirma.pl)
Wybierz numer witryny: 1
Krok 5: Walidacja domeny (HTTP-01)
Po wyborze witryny win-acme kontaktuje się z serwerami Let's Encrypt i inicjuje wyzwanie HTTP-01. Let's Encrypt próbuje pobrać specjalny plik z adresu:
http://www.twojafirma.pl/.well-known/acme-challenge/[token]
Win-acme tymczasowo tworzy ten plik w katalogu głównym witryny IIS. Jeśli serwer odpowie poprawnie, walidacja przechodzi automatycznie. Proces trwa kilkanaście sekund.
Najczęstszy problem w tym kroku: zapora ogniowa blokuje port 80 lub URL Rewrite przekierowuje wszystkie żądania HTTP na HTTPS przed walidacją. Upewnij się, że reguła przekierowania HTTP→HTTPS nie obejmuje ścieżki /.well-known/acme-challenge/.
Krok 6: Instalacja certyfikatu i powiązanie z IIS
Po pozytywnej walidacji win-acme:
- Pobiera certyfikat z serwerów Let's Encrypt
- Importuje go do Windows Certificate Store (magazyn komputera lokalnego, folder „Osobiste")
- Automatycznie tworzy lub aktualizuje binding HTTPS (port 443) w wybranej witrynie IIS
- Zapisuje konfigurację odnowienia w pliku
%ProgramData%\win-acme\ - Tworzy zaplanowane zadanie „win-acme renew" w Harmonogramie zadań Windows
Całość zajmuje zazwyczaj od 30 sekund do 2 minut.
Krok 7: Weryfikacja instalacji w Menedżerze IIS
Otwórz Menedżera IIS (inetmgr), wybierz witrynę i kliknij „Powiązania" (Bindings) w prawym panelu. Powinieneś zobaczyć nowy wpis:
Typ: https | Adres IP: Wszystkie nieprzypisane | Port: 443 | Certyfikat SSL: www.twojafirma.pl
Otwórz przeglądarkę i przejdź pod adres https://www.twojafirma.pl. Kłódka w pasku adresu i brak ostrzeżeń oznaczają sukces.
Automatyczne odnawianie certyfikatu
Win-acme tworzy zadanie w Harmonogramie zadań Windows o nazwie zbliżonej do win-acme renew (acme-v02.api.letsencrypt.org). Zadanie domyślnie uruchamia się codziennie o losowej godzinie i sprawdza, czy któryś z zarządzanych certyfikatów wymaga odnowienia (próg: 55 dni do wygaśnięcia). Jeśli tak — automatycznie przeprowadza cały cykl walidacji, pobrania i aktualizacji bindingów IIS.
Aby sprawdzić harmonogram zadań:
- Otwórz Harmonogram zadań (
taskschd.msc) - Przejdź do Biblioteka Harmonogramu zadań → win-acme
- Sprawdź kolumny „Ostatni czas uruchomienia" i „Wynik ostatniego uruchomienia" — kod
0x0 oznacza sukces
Możesz też ręcznie przetestować odnawianie bez faktycznej zmiany certyfikatu:
.\wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org/" --force
Konfiguracja bindingów HTTPS w IIS — ręczna instalacja certyfikatu komercyjnego
Jeśli używasz certyfikatu komercyjnego (DV/OV/EV od DigiCert, Sectigo, GlobalSign itp.), proces instalacji wygląda nieco inaczej.
Krok 1: Generowanie żądania CSR w IIS
W Menedżerze IIS kliknij węzeł serwera (nie konkretną witrynę), a następnie dwukrotnie kliknij „Certyfikaty serwera" w sekcji IIS. W prawym panelu wybierz „Utwórz żądanie certyfikatu". Wypełnij formularz:
- Nazwa pospolita (CN): dokładna nazwa domeny, np.
www.twojafirma.pl - Organizacja: pełna nazwa prawna firmy
- Jednostka organizacyjna: dział IT lub dział odpowiedzialny za serwer
- Miasto, Województwo, Kraj: dane rejestrowe
- Długość klucza kryptograficznego: wybierz 2048 bitów (minimum) lub 4096 bitów
Zapisz plik CSR (np. C:\certs\twojafirma-csr.txt). Jego zawartość wyślij do wybranego urzędu certyfikacji.
Krok 2: Import podpisanego certyfikatu
Po otrzymaniu certyfikatu od CA (plik .cer lub .crt) wróć do okna „Certyfikaty serwera" w IIS i wybierz „Zakończ żądanie certyfikatu". Wskaż plik certyfikatu i nadaj mu przyjazną nazwę, np. twojafirma.pl 2026.
Jeśli otrzymałeś certyfikat w formacie PFX (z kluczem prywatnym), wybierz zamiast tego „Importuj certyfikat" i podaj hasło PFX.
Krok 3: Dodanie bindingu HTTPS do witryny
- W Menedżerze IIS wybierz witrynę
- W prawym panelu kliknij Powiązania (Bindings)
- Kliknij Dodaj
- Typ:
https, Adres IP: Wszystkie nieprzypisane, Port: 443 - W polu „Certyfikat SSL" wybierz właśnie zainstalowany certyfikat
- Zaznacz opcję Wymagaj wskazania nazwy serwera (SNI), jeśli na jednym adresie IP hostujesz wiele domen HTTPS
- Kliknij OK i zamknij okno
Przekierowanie HTTP na HTTPS w IIS — URL Rewrite
Sama instalacja certyfikatu nie powoduje automatycznego przekierowania ruchu HTTP na HTTPS. Użytkownicy wpisujący http:// lub klikający stare linki nadal trafiają na niezaszyfrowaną wersję. Należy to naprawić przez trwałe przekierowanie 301.
Metoda 1: URL Rewrite (zalecana)
Upewnij się, że moduł URL Rewrite jest zainstalowany w IIS (dostępny bezpłatnie z Microsoft Web Platform Installer lub jako osobny instalator MSI). Następnie dodaj regułę przekierowania w pliku web.config aplikacji lub w konfiguracji witryny:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent"
url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Ważne: Warunek wykluczający localhost zapobiega problemom przy lokalnym dostępie deweloperskim. Jeśli używasz Let's Encrypt z walidacją HTTP-01, dodaj dodatkowy warunek wykluczający ścieżkę /.well-known/acme-challenge/ — inaczej wyzwanie walidacyjne zostanie przekierowane na HTTPS i walidacja się nie powiedzie.
Metoda 2: Funkcja „Wymagaj SSL" w IIS
W Menedżerze IIS wybierz witrynę lub folder, kliknij dwukrotnie „Ustawienia SSL" i zaznacz „Wymagaj SSL". Ta metoda zwraca kod błędu HTTP 403.4 zamiast przekierowania 301, co jest złą praktyką SEO — nie polecamy jej dla stron publicznych.
Nagłówek HSTS — wymuszenie HTTPS w przeglądarce
Po weryfikacji, że HTTPS działa poprawnie, warto dodać nagłówek HTTP Strict Transport Security (HSTS), który nakazuje przeglądarkom zawsze używać HTTPS dla Twojej domeny, nawet gdy użytkownik wpisze http://:
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security"
value="max-age=31536000; includeSubDomains; preload" />
</customHeaders>
</httpProtocol>
Wartość max-age=31536000 to jeden rok. Parametr includeSubDomains rozszerza HSTS na wszystkie subdomeny. preload pozwala zgłosić domenę do listy HSTS Preload (hstspreload.org), po czym główne przeglądarki będą korzystać z HTTPS nawet przy pierwszym odwiedzeniu domeny. Uwaga: HSTS z preload jest trudny do cofnięcia — stosuj go dopiero po pełnej weryfikacji HTTPS na wszystkich subdomenach.
Hartowanie TLS — wyłączenie TLS 1.0 i 1.1, wymuszenie TLS 1.2 i 1.3
Domyślna konfiguracja Windows Server może obsługiwać przestarzałe protokoły SSL 2.0, SSL 3.0, TLS 1.0 i TLS 1.1, które mają znane podatności (POODLE, BEAST, DROWN, SWEET32). Wyłączenie ich jest kluczowe dla bezpieczeństwa i zgodności ze standardami PCI DSS oraz CIS Benchmarks.
Metoda 1: IIS Crypto (zalecana dla administratorów)
IIS Crypto to bezpłatne, graficzne narzędzie firmy Nartac Software (dostępne na nartac.com/Products/IISCrypto). Umożliwia zarządzanie protokołami TLS/SSL, szyframi, algorytmami skrótu i kolejnością zestawów szyfrów bez ręcznej edycji rejestru.
Aby zastosować rekomendowaną konfigurację:
- Pobierz i uruchom IIS Crypto jako administrator
- Kliknij przycisk Best Practices w górnym panelu
- Narzędzie automatycznie wyłączy: SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, DES, 3DES, RC4, MD5
- Oraz włączy: TLS 1.2, TLS 1.3, AES 128/256, SHA256/384/512
- Kliknij Apply i zrestartuj serwer
Metoda 2: Ręczna edycja rejestru
Jeśli preferujesz skrypt PowerShell lub ręczną edycję, protokoły TLS konfiguruje się w kluczu:
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\
Przykładowy skrypt PowerShell wyłączający TLS 1.0 i TLS 1.1:
# Wyłącz TLS 1.0
$tls10 = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0"
New-Item -Path "$tls10\Server" -Force
Set-ItemProperty -Path "$tls10\Server" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "$tls10\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
New-Item -Path "$tls10\Client" -Force
Set-ItemProperty -Path "$tls10\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "$tls10\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
# Wyłącz TLS 1.1
$tls11 = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1"
New-Item -Path "$tls11\Server" -Force
Set-ItemProperty -Path "$tls11\Server" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "$tls11\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
New-Item -Path "$tls11\Client" -Force
Set-ItemProperty -Path "$tls11\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "$tls11\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
# Włącz TLS 1.2
$tls12 = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2"
New-Item -Path "$tls12\Server" -Force
Set-ItemProperty -Path "$tls12\Server" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "$tls12\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Write-Host "Gotowe. Uruchom ponownie serwer, aby zmiany weszły w życie."
Restart-Computer -Confirm
Uwaga: TLS 1.3 na Windows Server 2022 i 2025 jest domyślnie włączony i nie wymaga dodatkowej konfiguracji rejestru — obsługiwany jest przez wbudowany SCHANNEL. Na Windows Server 2019 TLS 1.3 jest dostępny od wersji 1903 (October 2019 Update).
Ważne dla środowisk produkcyjnych: Przed wyłączeniem TLS 1.0/1.1 upewnij się, że żadne legacy aplikacje, serwery SQL, serwery pocztowe ani urządzenia IoT w sieci nie wymagają tych protokołów. Nagła zmiana w środowisku bez testów może spowodować niedostępność usług.
Testowanie konfiguracji SSL z SSL Labs
Po skonfigurowaniu certyfikatu i hartowaniu TLS konieczna jest weryfikacja poprawności konfiguracji. Najlepszym narzędziem jest Qualys SSL Server Test dostępny bezpłatnie pod adresem ssllabs.com/ssltest.
Jak przeprowadzić test
- Wejdź na ssllabs.com/ssltest
- Wpisz pełną nazwę domeny (np.
www.twojafirma.pl) i kliknij Submit - Poczekaj 1–3 minuty na zakończenie analizy
- Sprawdź wynik końcowy i szczegółowe sekcje raportu
Co oznaczają oceny SSL Labs
- A+ — doskonała konfiguracja, HSTS włączony, tylko TLS 1.2/1.3, silne szyfry, Forward Secrecy
- A — dobra konfiguracja, wszystkie podstawowe wymagania spełnione
- B — drobne problemy (np. TLS 1.0 lub 1.1 nadal włączone, brak Forward Secrecy)
- C–F — poważne problemy konfiguracyjne wymagające natychmiastowej interwencji
- T — certyfikat niezaufany (self-signed lub wygasły)
Najczęstsze problemy wykrywane przez SSL Labs
- Włączony TLS 1.0/1.1 — obniża ocenę do B lub gorzej. Rozwiązanie: IIS Crypto → Best Practices.
- Brak Forward Secrecy — serwer nie preferuje zestawów szyfrów ECDHE. Rozwiązanie: zmiana kolejności szyfrów w IIS Crypto.
- POODLE (SSL 3.0) — SSL 3.0 nadal włączony. Rozwiązanie: wyłącz SSL 3.0 przez IIS Crypto lub rejestr.
- Niekompletny łańcuch certyfikatów — serwer nie wysyła certyfikatów pośrednich CA. Rozwiązanie: zainstaluj certyfikaty pośrednie w magazynie „Intermediate Certification Authorities" w certlm.msc.
- HSTS nie włączony — nie wpływa bezpośrednio na ocenę, ale jest wymagany do A+. Rozwiązanie: dodaj nagłówek Strict-Transport-Security w web.config.
Certyfikaty Wildcard z Let's Encrypt — konfiguracja DNS-01 w win-acme
Certyfikat wildcard (*.twojafirma.pl) pokrywa wszystkie subdomeny pierwszego poziomu jednym certyfikatem. Jest szczególnie przydatny, gdy na serwerze działa wiele subdomen: app.twojafirma.pl, api.twojafirma.pl, mail.twojafirma.pl, panel.twojafirma.pl itd.
Let's Encrypt obsługuje certyfikaty wildcard wyłącznie przez walidację DNS-01 — nie można ich wydać przez HTTP-01. Wymaga to możliwości programowego tworzenia rekordu TXT w strefie DNS Twojej domeny.
Walidacja DNS-01 przez wtyczkę Cloudflare w win-acme
Jeśli używasz Cloudflare jako dostawcy DNS (co jest rekomendowane dla szybkości i bezpieczeństwa), win-acme posiada wbudowaną wtyczkę. Aby ją skonfigurować:
- Uruchom win-acme z opcją
M: Create certificate (full options) - Jako źródło domen wybierz
Manual input lub IIS i wpisz *.twojafirma.pl - Jako metodę walidacji wybierz
DNS-01 validation - Jako dostawcę DNS wybierz
Cloudflare - Podaj API Token Cloudflare z uprawnieniami
Zone:DNS:Edit dla wybranej domeny - Win-acme automatycznie doda rekord TXT
_acme-challenge.twojafirma.pl, zaczeka na propagację DNS i usunie rekord po walidacji
Win-acme obsługuje również: Azure DNS, AWS Route53, Gandi, GoDaddy, NameCheap, Hetzner DNS, DirectAdmin i wiele innych przez wtyczki z repozytorium projektu.
Ręczna walidacja DNS (bez wtyczki)
Jeśli dostawca DNS nie ma wtyczki, możesz użyć ręcznej walidacji:
.\wacs.exe --target manual --host *.twojafirma.pl,twojafirma.pl
--validation dns-01 --validationmode dns
--dnscreatescript "C:\scripts\dns-add.ps1"
--dnsdeletescript "C:\scripts\dns-remove.ps1"
Skrypty dns-add.ps1 i dns-remove.ps1 muszą komunikować się z API dostawcy DNS. Win-acme przekazuje im zmienne środowiskowe z nazwą i wartością rekordu TXT.
Wewnętrzna PKI — Active Directory Certificate Services dla sieci korporacyjnych
Dla środowisk korporacyjnych, gdzie certyfikaty muszą być wydawane dla serwerów i urządzeń w sieci wewnętrznej (intranety, usługi Active Directory, serwery LDAPS, szyfrowanie S/MIME poczty), odpowiednim rozwiązaniem jest Active Directory Certificate Services (AD CS) — rola Windows Server działająca jako wewnętrzny urząd certyfikacji (Enterprise CA).
AD CS umożliwia:
- Wydawanie certyfikatów dla wewnętrznych nazw (
serwer.domena.local), które nie są dostępne publicznie i nie kwalifikują się do Let's Encrypt - Automatyczne zapisywanie certyfikatów na komputerach domenowych przez Group Policy (autoenrollment)
- Centralne zarządzanie odwoływaniem certyfikatów (CRL, OCSP)
- Wydawanie certyfikatów dla uwierzytelniania kart inteligentnych, VPN, Wi-Fi (EAP-TLS)
Instalacja roli AD CS (skrót)
W Menedżerze serwera wybierz „Dodaj role i funkcje" → „Usługi certyfikatów w usłudze Active Directory" → „Urząd certyfikacji". Po instalacji uruchom kreator konfiguracji AD CS, wybierz typ Enterprise CA (dla środowisk domenowych) lub Standalone CA (dla sieci izolowanych), a następnie postępuj zgodnie z kreatorem.
Uwaga: Pełna konfiguracja AD CS (hierarchia dwupoziomowa z Root CA offline i Issuing CA) to zagadnienie na osobny, obszerny artykuł. Na potrzeby tego przewodnika AD CS omawiamy skrótowo — dla większości małych i średnich firm certyfikaty publiczne DV (Let's Encrypt lub komercyjne) są wystarczające i znacznie prostsze w zarządzaniu.
Najczęstsze błędy SSL na Windows Server i jak je naprawić
Błąd 1: Wygasły certyfikat
Objaw: Przeglądarka wyświetla komunikat „Certyfikat bezpieczeństwa tej witryny wygasł" (NET::ERR_CERT_DATE_INVALID).
Przyczyna: Certyfikat nie został odnowiony przed datą wygaśnięcia. W przypadku Let's Encrypt — zadanie w Harmonogramie zadań nie działało lub było wyłączone.
Rozwiązanie:
- Sprawdź stan zadania win-acme w Task Scheduler — szukaj błędów w kolumnie „Wynik ostatniego uruchomienia"
- Ręcznie uruchom odnowienie:
.\wacs.exe --renew --force - Sprawdź, czy port 80 jest dostępny z zewnątrz (walidacja HTTP-01)
- Dla certyfikatów komercyjnych: zakup i zainstaluj nowy certyfikat zgodnie z procedurą od CA
Błąd 2: Mixed Content — mieszana zawartość
Objaw: Strona ładuje się przez HTTPS, ale kłódka jest przekreślona lub przeglądarka blokuje część zasobów. W konsoli deweloperskiej widoczne są błędy Mixed Content: The page was loaded over HTTPS, but requested an insecure resource.
Przyczyna: Strona HTTPS ładuje zasoby (obrazy, skrypty JS, arkusze CSS, fonty, iframe) przez HTTP.
Rozwiązanie:
- Uruchom Why No Padlock (whynopadlock.com) lub otwórz konsolę deweloperską przeglądarki (F12 → Konsola) i zidentyfikuj wszystkie zasoby HTTP
- Zmień wszystkie hardkodowane URL-e
http:// na https:// lub ścieżki protokołu-agnostyczne (//domena.pl/zasob) - Dodaj nagłówek CSP wymuszający aktualizację:
Content-Security-Policy: upgrade-insecure-requests w web.config - Dla systemów CMS (WordPress, Joomla, PrestaShop): użyj wbudowanych narzędzi do masowej zmiany URL-ów w bazie danych
Błąd 3: Nieprawidłowe powiązanie w IIS (wrong binding)
Objaw: Certyfikat jest zainstalowany, ale strona wyświetla certyfikat innej witryny lub domyślny self-signed certyfikat IIS. Pojawia się błąd NET::ERR_CERT_COMMON_NAME_INVALID.
Przyczyna: Na jednym adresie IP działa kilka witryn HTTPS bez włączonego SNI (Server Name Indication), co powoduje, że IIS nie wie, który certyfikat wybrać dla danej domeny.
Rozwiązanie:
- Otwórz powiązania witryny w IIS
- Dla każdego bindingu HTTPS wpisz konkretną nazwę hosta (np.
www.twojafirma.pl) - Zaznacz opcję Wymagaj wskazania nazwy serwera (SNI)
- Upewnij się, że każda witryna HTTPS ma osobny binding z właściwym certyfikatem i nazwą hosta
Błąd 4: Niekompletny łańcuch certyfikatów
Objaw: Certyfikat jest ważny na komputerach z Windows, ale pojawia się błąd zaufania na Androidzie, Linuksie lub starszych systemach.
Przyczyna: IIS nie wysyła certyfikatów pośrednich (intermediate CA), które są potrzebne do zbudowania łańcucha zaufania do głównego CA. SSL Labs wykryje ten problem jako „Chain issues: Incomplete".
Rozwiązanie:
- Pobierz plik z certyfikatami pośrednimi od swojego CA (zazwyczaj dostępny jako „CA Bundle" lub „Intermediate Certificate")
- Otwórz
certlm.msc (Menedżer certyfikatów komputera) - Przejdź do Pośrednie urzędy certyfikacji → Certyfikaty
- Importuj plik certyfikatów pośrednich
- Zrestartuj usługę IIS:
iisreset /restart
Błąd 5: Port 443 zablokowany przez zaporę ogniową
Objaw: Strona nie ładuje się przez HTTPS, przeglądarka wyświetla błąd połączenia.
Rozwiązanie: Dodaj regułę przychodzącą w Zaporze systemu Windows (lub zaporze zewnętrznej):
netsh advfirewall firewall add rule name="HTTPS Inbound"
dir=in action=allow protocol=TCP localport=443
Sprawdź też, czy dostawca hostingu lub router brzegowy nie blokuje portu 443 na poziomie sieciowym.
Licencje Windows Server w KluczeSoft
Aby wdrożyć opisaną konfigurację SSL na Windows Server, potrzebujesz oryginalnej licencji systemu. W KluczeSoft oferujemy certyfikowane klucze licencyjne w konkurencyjnych cenach, z dostawą e-mailem w ciągu kilku minut i fakturą VAT:
- Windows Server 2022 Standard — 2990 zł — najstabilniejsza wersja dla środowisk produkcyjnych, pełna obsługa TLS 1.3, IIS 10.0, wbudowany SCHANNEL z obsługą nowoczesnych zestawów szyfrów
- Windows Server 2025 Standard — najnowsza wersja z natywną obsługą TLS 1.3, ulepszonym Hyper-V, nowym modelem zabezpieczeń i długim wsparciem do 2034 roku
Podsumowanie — checklista konfiguracji SSL na Windows Server
Prawidłowa konfiguracja SSL na Windows Server z IIS to proces kilkuetapowy. Poniższa checklista pozwoli Ci upewnić się, że nic nie zostało pominięte:
- Certyfikat SSL zainstalowany i powiązany z witryną IIS (port 443)
- Binding HTTPS zawiera poprawną nazwę hosta i włączone SNI (jeśli wiele domen na jednym IP)
- Przekierowanie HTTP → HTTPS skonfigurowane przez URL Rewrite (kod 301)
- Nagłówek HSTS dodany (opcjonalnie: z parametrem preload)
- TLS 1.0 i TLS 1.1 wyłączone (IIS Crypto lub rejestr)
- TLS 1.2 i TLS 1.3 włączone i preferowane
- SSL 2.0 i SSL 3.0 wyłączone
- Szyfry RC4, DES, 3DES wyłączone
- Łańcuch certyfikatów kompletny (certyfikaty pośrednie zainstalowane)
- Test SSL Labs: ocena A lub A+
- Brak błędów mixed content w konsoli przeglądarki
- Automatyczne odnawianie certyfikatu skonfigurowane (win-acme Task Scheduler)
- Monitoring daty wygaśnięcia certyfikatu ustawiony (alert min. 30 dni przed końcem ważności)
Konfiguracja SSL na Windows Server z IIS nie jest skomplikowana — win-acme sprowadza całą procedurę do kilku interaktywnych kroków, a IIS Crypto eliminuje konieczność ręcznej edycji rejestru. Najważniejsze to nie poprzestać na samej instalacji certyfikatu: hartowanie TLS, przekierowanie HTTP→HTTPS, sprawdzenie łańcucha i test SSL Labs to elementy, które oddzielają solidną konfigurację od powierzchownej. Bezpieczeństwo serwera to inwestycja, która chroni zarówno Twoje dane, jak i zaufanie klientów.
Dodaj komentarz