Zainstaluj bezpłatny certyfikat Let's Encrypt TLS / SSL na IIS / RDS w systemie Windows Server 2016/2012 R2

W tej recenzji omówimy funkcje instalowania i wiązania bezpłatnego certyfikatu TLS / SSL od Let's Encrypt dla witryny na serwerze sieci Web IIS działającym w systemie Windows Server 2019/2016/2012 R2.

Treść

  • Let's Encrypt and ACME Clients for Windows
  • Klient WACS do zainstalowania certyfikatu TLS Let's Encrypt Certificate w IIS na Windows Server
  • Przekierowanie ruchu na stronie IIS z HTTP na adres HTTPS
  • Korzystanie z certyfikatu Let's Encrypt dla usług pulpitu zdalnego

Let's Encrypt and ACME Clients for Windows

Obecność certyfikatu TLS / SSL na stronie pozwala chronić dane użytkownika przesyłane przez sieć przed atakami typu man-in-the-middle i gwarantuje integralność przesyłanych danych. Urząd certyfikacji organizacji non-profit Niech„s Szyfruj Umożliwia automatyczne wydawanie za pośrednictwem API bezpłatnych kryptograficznych certyfikatów TLS X.509 do szyfrowania (HTTPS). Wydawane są tylko certyfikaty do walidacji domeny, z okresem ważności 90 dni (istnieje limit 50 certyfikatów dla jednej domeny na tydzień). Ale możesz automatycznie ponownie wystawić certyfikat SSL dla swojej witryny zgodnie z harmonogramem.

Wywoływany jest interfejs API do automatycznego wystawiania certyfikatów Zautomatyzowane Certyfikat Zarządzanie Środowisko (ACME) API. W przypadku systemów Windows istnieją obecnie 3 najpopularniejsze implementacje klienta ACME API:

  • Utility Windows ACME Proste (WACS) - narzędzie wiersza polecenia do interaktywnego wystawiania certyfikatu i łączenia go z określoną witryną na serwerze sieci Web IIS;
  • Moduł PowerShell ACMESharp - Biblioteka PowerShell z wieloma poleceniami do interakcji za pośrednictwem interfejsu API ACME z serwerami Let's Encrypt;
  • Certyfikuj - Graficzny menedżer certyfikatów SSL dla systemu Windows, który umożliwia interaktywne zarządzanie certyfikatami za pośrednictwem interfejsu API ACME.

Klient WACS do zainstalowania certyfikatu TLS Let's Encrypt Certificate w IIS na Windows Server

Najprostszym sposobem na uzyskanie certyfikatu SSL z Let's Encrypt jest użycie narzędzia konsoli Windows ACME Prosty (Wacs) (poprzednio projekt był nazywany Letsencrypt-Win-Proste). Jest to prosty kreator, który pozwala wybrać jedną z witryn działających w IIS i automatycznie wystawić i powiązać z nią certyfikat SSL.

Załóżmy, że mamy witrynę internetową w IIS wdrożoną z systemem Windows Server 2016. Naszym zadaniem jest przełączyć ją w tryb HTTPS poprzez zainstalowanie certyfikatu SSL z Let's Encrypt.

Pobierz najnowszą wersję klienta WACS ze strony projektu na GitHub https://github.com/PKISharp/win-acme/releases (w moim przypadku jest to wersja v2.0.10 - plik win-acme.v2.0.10.444.zip).

Rozpakuj archiwum do katalogu na serwerze za pomocą IIS: c: \ inetpub \ letsencrypt

Aby korzystać z Win-Acme, musisz zainstalować .NET Framework 4.7.2 lub nowszy (Jak dowiedzieć się, która wersja .Net jest zainstalowana?).

Otwórz wiersz polecenia z uprawnieniami administratora, przejdź do c: \ inetpub \ letsencrypt i uruchom wacs.exe.

Spowoduje to uruchomienie interaktywnego kreatora do generowania certyfikatu Let's Encrypt i powiązania go z witryną IIS. Aby szybko utworzyć nowy certyfikat, wybierz N.: - Utwórz nowe certyfikaty (proste dla IIS).

Następnie musisz wybrać typ certyfikatu. W naszym przykładzie nie ma potrzeby używania certyfikatu z aliasami (wiele SAN - alternatywna nazwa podmiotu), więc po prostu wybierz 1. Pojedyncze wiązanie strony IIS. Jeśli potrzebujesz certyfikatu Wildcard, wybierz opcję 3.

Następnie narzędzie wyświetli listę witryn działających na serwerze IIS i zaoferuje wybór witryny, dla której należy utworzyć i powiązać nowy certyfikat SSL.

Podaj swój adres e-mail, na który będą wysyłane powiadomienia o problemach z aktualizacją certyfikatu witryny i inne powiadomienia (możesz podać wiele wiadomości e-mail oddzielonych przecinkami). Pozostaje zaakceptować warunki użytkowania, a Windows ACME Simple połączy się z serwerami Let's Encrypt i spróbuje automatycznie wygenerować nowy certyfikat SSL dla Twojej witryny.

Proces generowania i instalowania certyfikatu Let's Encrypt SSL dla IIS jest w pełni zautomatyzowany.

Domyślnie sprawdzanie poprawności domeny odbywa się w trybie walidacja http-01 (SelfHosting). Aby to zrobić, musisz mieć rekord w domenie DNS wskazujący na twój serwer internetowy. Podczas uruchamiania WACS w trybie ręcznym można wybrać sprawdzanie poprawności typu - 4 [http-01] Utwórz tymczasowe aplikacji w IIS (zalecane). W takim przypadku na serwerze sieci Web IIS zostanie utworzona niewielka aplikacja, za pomocą której serwery Let's Encrypt mogą sprawdzać poprawność.

Uwaga. Podczas przeprowadzania weryfikacji TLS / HTTP witryna powinna być dostępna zewnętrznie przy użyciu pełnej nazwy DNS przy użyciu protokołów HTTP (80 / TCP) i HTTPS (443 / TCP).

Narzędzie WACS zapisuje klucz prywatny certyfikatu (* .pem), sam certyfikat i kilka innych plików w katalogu C: \ Users \% nazwa użytkownika% \ AppData \ Roaming \ letsencrypt-win-simple. Następnie zainstaluje wygenerowany w tle certyfikat Let's Encrypt SSL i załączy go do Twojej witryny IIS. Jeśli certyfikat SSL (na przykład samopodpisany) jest już zainstalowany w witrynie, zostanie zastąpiony nowym.

W Menedżerze IIS otwórz menu Wiązanie strony dla Twojej witryny i upewnij się, że używa certyfikatu wydanego przez Let's Encrypt Authority X3.

Ten certyfikat będzie zaufany, jeśli terminowo zaktualizujesz certyfikaty główne systemu Windows..

W komputerowej przechowalni certyfikatów Let's Encrypt for IIS certyfikat znajduje się w sekcji Hosting -> Certyfikaty.

Windows ACME Simple tworzy nową regułę w Harmonogramie zadań Windows (win-acme-renew (acme-v02.api.letsencrypt.org)), aby automatycznie odnowić certyfikat. Zadanie rozpoczyna się każdego dnia, odnowienie certyfikatu następuje po 60 dniach. Program planujący uruchamia polecenie:

C: \ inetpub \ letsencrypt \ wacs.exe --renew --baseuri "https://acme-v02.api.letsencrypt.org"

Możesz użyć tego samego polecenia, aby ręcznie zaktualizować certyfikat.

Przekierowanie ruchu na stronie IIS z HTTP na adres HTTPS

Aby przekierować cały przychodzący ruch HTTP na stronę HTTPS, musisz zainstalować moduł Microsoft URL Przepisz Moduł (https://www.iis.net/downloads/microsoft/url-rewrite) i upewnij się, że opcja SSL (Wymagaj SSL) nie jest włączona w ustawieniach strony. Pozostaje skonfigurować przekierowanie w pliku web.config:













Możesz również skonfigurować przekierowanie ruchu za pomocą Przepisz adres URL za pomocą GUI Menedżera usług IIS. Wybierz Witryny -> twoja nazwa -> Przepisz URL.

Utwórz nową regułę Dodaj regułę -> Pusta reguła.

Podaj nazwę reguły i zmień wartości parametrów:

  • Żądany adres URL -> pasuje do wzorca
  • Używanie -> Wyrażenia regularne
  • Wzór -> (. *)

W bloku Warunki zmień Grupowanie logiczne -> Dopasuj wszystko i kliknij Dodaj. Wskazać

  • Wprowadzanie warunku -> HTTPS
  • Sprawdź, czy łańcuch wejściowy -> pasuje do wzorca
  • Wzór -> ^ OFF $

Teraz w bloku Action wybierz:

  • Typ akcji -> Przekieruj
  • Przekieruj adres URL -> https: // HTTP_HOST / R: 1
  • Typ przekierowania -> Stałe (301)

Otwórz przeglądarkę i spróbuj otworzyć witrynę za pomocą adresu HTTP, powinieneś zostać automatycznie przekierowany na adres URL HTTPS.

Korzystanie z certyfikatu Let's Encrypt dla usług pulpitu zdalnego

Jeśli używasz Remote Desktop Gateway / RD Web Access do łączenia zewnętrznych użytkowników z siecią korporacyjną, możesz użyć zwykłego certyfikatu Let's Encrypt SSL zamiast zwykłego certyfikatu z podpisem własnym. Zobaczmy, jak poprawnie zainstalować certyfikat Let's Encrypt dla zabezpieczonych usług pulpitu zdalnego w systemie Windows Server..

Jeśli rola RDSH jest również podniesiona na serwerze bramy usług pulpitu zdalnego, musisz uniemożliwić użytkownikom Read dostęp do katalogu, w którym masz WACS (w moim przykładzie jest to c: \ inetpub \ letsencrypt) i certyfikat Let's Encrypt (certyfikat C: \ ProgramData) \ win-acme).

Następnie na serwerze RDP GW uruchom wacs.exe, jak opisano powyżej, i wybierz żądaną witrynę IIS (zwykle domyślną witrynę sieci Web). Let's Encrypt daje ci nowy certyfikat, który jest zainstalowany dla strony internetowej, a zadanie automatycznego odnawiania certyfikatu pojawia się w harmonogramie.

Możesz ręcznie wyeksportować ten certyfikat i powiązać go z wymaganymi usługami RDS za pomocą powiązania SSL. Ale przy ponownym wystawianiu certyfikatu Let's Encrypt będziesz musiał wykonywać te czynności ręcznie co 60 dni.

Potrzebujemy skryptu, który natychmiast po otrzymaniu (odnowieniu) certyfikatu Let's Encrypt użyje go do RD Gateway.

Projekt win-acme ma gotowy skrypt PowerShell ImportRDGateway.ps1 (https://github.com/PKISharp/win-acme/tree/master/dist/Scripts), co pozwala zainstalować wybrany certyfikat SSL dla usług pulpitu zdalnego. Główną wadą skryptu jest to, że musisz ręcznie określić odcisk palca nowego certyfikatu:
ImportRDGateway.ps1

Aby automatycznie uzyskać odcisk palca certyfikatu z określonej witryny IIS, użyj zmodyfikowanego skryptu ImportRDGateway_Cert_From_IIS.ps1 (na podstawie standardowego ImportRDGateway.ps1).

Instrukcja i zmodyfikowany skrypt PowerShell zostały wysłane przez naszego czytelnika Antona, za co wysyłamy mu promienie wdzięczności!

Możesz uruchomić ten skrypt ręcznie:

powershell -File ImportRDGateway_Cert_From_IIS.ps1

Jeśli brama RDS znajduje się w standardowej witrynie IIS „Domyślna witryna internetowa” z indeksem 0, możesz użyć skryptu bez zmian.

Aby uzyskać identyfikator witryny w IIS, otwórz konsolę PowerShell i uruchom:

Moduł administracji Web Import
Get-ChildItem IIS: Witryny

Uzyskaj listę formularza:

Kolumna ID pokazuje indeks witryny, odejmij od niej jeden. Wynikowy indeks witryny powinien zostać podany zamiast 0 w 27 wierszu skryptu PowerShell:

$ NewCertThumbprint = (Get-ChildItem IIS: SSLBindings) [0] .Thumbprint

Teraz otwórz zadanie harmonogramu win-acme-renew (acme-v02.api.letsencrypt.org) i na karcie Akcja dodaj nowe zadanie, które uruchamia skrypt ImportRDGateway_Cert_From_IIS.ps1 po zaktualizowaniu certyfikatu.

Aby nie zmieniać uprawnień do wykonywania skryptów PowerShell, możesz wywołać skrypt za pomocą polecenia:

PowerShell.exe -ExecutionPolicy Bypass -Plik c: \ inetpub \ letsencrypt \ ImportRDGateway_Cert_From_IIS.ps1

Teraz skrypt do powiązania certyfikatu SSL z RDS zostanie wykonany natychmiast po odnowieniu certyfikatu Let's Encrypt. W takim przypadku usługa bramy usług pulpitu zdalnego jest automatycznie restartowana za pomocą polecenia:

Uruchom ponownie usługę TSGateway

Po ponownym uruchomieniu usługi TSGateway wszystkie bieżące sesje użytkownika są przerywane, dlatego zaleca się zmianę częstotliwości uruchamiania zadania aktualizacji certyfikatu o 1 raz w ciągu 60 dni.

Pamiętaj, że certyfikaty Let's Encrypt są obecnie szeroko stosowane w witrynach wielu dużych firm i cieszą się zaufaniem wszystkich przeglądarek. Mam nadzieję, że los bezpłatnego urzędu certyfikacji Let's Encrypt nie ucierpi na losach WoSign i StartCom.