Nawigacja bloga

Najnowsze posty

Certyfikaty SSL na Windows Server — IIS + Let's Encrypt [2026]
Certyfikaty SSL na Windows Server — IIS + Let's Encrypt [2026]
4 wyświetlenia 0 Lubię

W 2026 roku strona bez HTTPS to nie tylko brak kłódki w przeglądarce — to utrata pozycji w Google, ostrzeżenia dla...

Czytaj więcej
DHCP i DNS na Windows Server — konfiguracja od zera [2026]
DHCP i DNS na Windows Server — konfiguracja od zera [2026]
5 wyświetlenia 0 Lubię

DHCP i DNS to dwie usługi sieciowe, bez których żadna firmowa infrastruktura oparta na Windows Server nie może...

Czytaj więcej
Print Server na Windows Server — drukarki w firmie [2026]
Print Server na Windows Server — drukarki w firmie [2026]
5 wyświetlenia 0 Lubię

Masz 5 lub więcej drukarek w firmie i ręcznie instalujesz sterowniki na każdym komputerze? Każda wymiana urządzenia...

Czytaj więcej
Windows Admin Center — zarządzanie serwerami [2026]
Windows Admin Center — zarządzanie serwerami [2026]
5 wyświetlenia 0 Lubię

Przez ponad dekadę zarządzanie Windows Server oznaczało żonglowanie: Server Manager na stacji roboczej, kilka okienek...

Czytaj więcej
Storage Spaces Direct (S2D) — tanie macierze [Poradnik 2026]
Storage Spaces Direct (S2D) — tanie macierze [Poradnik 2026]
5 wyświetlenia 0 Lubię

Tradycyjna macierz SAN kosztuje 50–200 tys. zł. Storage Spaces Direct daje porównywalną wydajność za ułamek tej ceny...

Czytaj więcej

Certyfikaty SSL na Windows Server — IIS + Let's Encrypt [2026]

4 Odsłony 0 Polubiony
 

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 certyfikatuWeryfikacjaCzas wydaniaCena orientacyjnaZastosowanie
DV (Domain Validation)Tylko własność domenyMinuty0–200 zł/rokBlogi, strony firmowe, środowiska deweloperskie
OV (Organization Validation)Własność domeny + weryfikacja firmy1–3 dni robocze300–800 zł/rokStrony korporacyjne, portale B2B
EV (Extended Validation)Pełna weryfikacja prawna firmy3–7 dni roboczych800–2 500 zł/rokBanki, instytucje finansowe, duże sklepy
Wildcard DVWłasność domeny, obejmuje wszystkie subdomenyMinuty (Let's Encrypt) lub godziny (komercyjny)0 (LE) / 400–1 200 zł/rokFirmy z wieloma subdomenami (app.*, mail.*, api.*)
SAN/Multi-domainDV lub OV, pokrywa wiele różnych domenMinuty–dni500–1 500 zł/rokFirmy 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:

  1. Pobiera certyfikat z serwerów Let's Encrypt
  2. Importuje go do Windows Certificate Store (magazyn komputera lokalnego, folder „Osobiste")
  3. Automatycznie tworzy lub aktualizuje binding HTTPS (port 443) w wybranej witrynie IIS
  4. Zapisuje konfigurację odnowienia w pliku %ProgramData%\win-acme\
  5. 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ń:

  1. Otwórz Harmonogram zadań (taskschd.msc)
  2. Przejdź do Biblioteka Harmonogramu zadań → win-acme
  3. 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

  1. W Menedżerze IIS wybierz witrynę
  2. W prawym panelu kliknij Powiązania (Bindings)
  3. Kliknij Dodaj
  4. Typ: https, Adres IP: Wszystkie nieprzypisane, Port: 443
  5. W polu „Certyfikat SSL" wybierz właśnie zainstalowany certyfikat
  6. Zaznacz opcję Wymagaj wskazania nazwy serwera (SNI), jeśli na jednym adresie IP hostujesz wiele domen HTTPS
  7. 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ę:

  1. Pobierz i uruchom IIS Crypto jako administrator
  2. Kliknij przycisk Best Practices w górnym panelu
  3. Narzędzie automatycznie wyłączy: SSL 2.0, SSL 3.0, TLS 1.0, TLS 1.1, DES, 3DES, RC4, MD5
  4. Oraz włączy: TLS 1.2, TLS 1.3, AES 128/256, SHA256/384/512
  5. 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

  1. Wejdź na ssllabs.com/ssltest
  2. Wpisz pełną nazwę domeny (np. www.twojafirma.pl) i kliknij Submit
  3. Poczekaj 1–3 minuty na zakończenie analizy
  4. 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ć:

  1. Uruchom win-acme z opcją M: Create certificate (full options)
  2. Jako źródło domen wybierz Manual input lub IIS i wpisz *.twojafirma.pl
  3. Jako metodę walidacji wybierz DNS-01 validation
  4. Jako dostawcę DNS wybierz Cloudflare
  5. Podaj API Token Cloudflare z uprawnieniami Zone:DNS:Edit dla wybranej domeny
  6. 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:

  1. Sprawdź stan zadania win-acme w Task Scheduler — szukaj błędów w kolumnie „Wynik ostatniego uruchomienia"
  2. Ręcznie uruchom odnowienie: .\wacs.exe --renew --force
  3. Sprawdź, czy port 80 jest dostępny z zewnątrz (walidacja HTTP-01)
  4. 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:

  1. Uruchom Why No Padlock (whynopadlock.com) lub otwórz konsolę deweloperską przeglądarki (F12 → Konsola) i zidentyfikuj wszystkie zasoby HTTP
  2. Zmień wszystkie hardkodowane URL-e http:// na https:// lub ścieżki protokołu-agnostyczne (//domena.pl/zasob)
  3. Dodaj nagłówek CSP wymuszający aktualizację: Content-Security-Policy: upgrade-insecure-requests w web.config
  4. 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:

  1. Otwórz powiązania witryny w IIS
  2. Dla każdego bindingu HTTPS wpisz konkretną nazwę hosta (np. www.twojafirma.pl)
  3. Zaznacz opcję Wymagaj wskazania nazwy serwera (SNI)
  4. 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:

  1. Pobierz plik z certyfikatami pośrednimi od swojego CA (zazwyczaj dostępny jako „CA Bundle" lub „Intermediate Certificate")
  2. Otwórz certlm.msc (Menedżer certyfikatów komputera)
  3. Przejdź do Pośrednie urzędy certyfikacji → Certyfikaty
  4. Importuj plik certyfikatów pośrednich
  5. 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.

 
Czy ten wpis na blogu był dla Ciebie pomocny?

Dodaj komentarz

Kod zabezpieczający
z VAT
🛒 Do koszyka