IIS Reverse SSL Proxy unter Windows Server 2012R2/2016 mit einer Webfarm einrichten (Schritt für Schritt)

Ab und zu muss ein Wbservice auf einem „dritten“ Web- oder Applikationsserver wie Tomcat, Jetty ein Hardware-IoT-Gerät (Heizungssteuerung, Alarmsystem …) oder ähnliches sicher an das Internet angebunden werden. Was bietet sich mehr an, als ein reverser Proxy in einem „Standard-System“, der die SSL/TLS-Verbindung eines Clients verwaltet und nur die nackten HTTP-Anfragen unverschlüsselt weiterleitet? Eine einfache Anleitung für einen SSL-Offloading-reverse-Proxy.

Installation IIS als reverse Proxy mit SSL-Offloading

Installieren

Reverse-Proxy im IIS einschalten

IIS-Konsole („Internetinformationsdienste (IIS) Manager“) > Links auf den Server > Rechts auf „Application Request Routing Cache“ > Ganz recht auf die Action „Server Proxy Settings…“ > „Enable Proxy“ einschalten. Sonst hier nichts ausfüllen, vor allem das Feld für die Proxy-Chain leer lassen.

Falls noch nicht geschehen: SSL-Zertifikat in IIS importieren

Wir importieren hier ein Zertifikat einschliesslich private Key, zum Beispiel aus einem Wildcard-Zertifikat. Je nach Ausgangsstellung muss das passende Zertifikat zur Verfügung stehen (self-signed oder unterschriebener CSR und so weiter).

Doppelklick auf das PFX > Speicherort „Lokaler Computer“ > Weiter … (dem Assistenten folgen) …Fertigstellen.

SSL-Listener im IIS erstellen

IIS Manager > Links die Site auswählen > Rechts die Aktion „Bindungen“ > Hinzufügen > Den Typ auf „SSL“ stellen und den rest des Fesnters entsprechend ausfüllen. Sollte hier kein SSL-Zertifikat zur Auswahl stehen, ist das Zertifikat nicht korrekt importieren (oder es steht kein privater Schlüssel zur Verfügung). Dann den vorherigen Schritt noch einmal genau anschauen. Sollte der lokale Port :80 belegt sein, diesen auf einen anderen freien Port umstellen.

Weiterleitungsziel (Server „Farm“) erstellen und Rewrite-Regel erstellen

Im IIS-Manager links unten auf den neuen Knoten „Server Farms“ > Create Server Farm

Server-Farm Name: beliebig > Das Feld „Server Address“ ist der Ziel-Webserver (in diesem Bespiel ist der Ziel-Webserver auf dem lokalen Host 127.0.0.1, das kann aber auch ein BELIEBIGER-HOST.DOMAIN.INTERN sein) > Die folgende „Rewrite Rules“ Frage mit „Ja“ beanworten („IIS Manager can create a URL rewrite rule to route all incoming requests to this server farm automatically. Do you want to create this rule now? You can also create this rule later by visiting the Routing Rules page of the server farm.“)

  • Unter „Advanced Settings“ müssen HTTP/HTTPS-port belegt sein. Wenn der Webserver nur auf HTTP reagiert, einfach undedizierten Müll eintragen.
  • Der Port lässt sich im nachhinein an dieser Stelle nicht mehr ändern. Ändert sich der Ziel-Port, einfach den Server löschen und einen neuen Eintrag hinzufügen. Alternativ kann man über den „Configuration Editor“ > Web Farms den eintrag erreichen. Microsoft hat sich hier das logische GUI einfach gespart.

Damit ider der IIS Reverse Proxy auch schon fertig.

13 Replies to “IIS Reverse SSL Proxy unter Windows Server 2012R2/2016 mit einer Webfarm einrichten (Schritt für Schritt)”

  1. Habe bei einem Reverse-Proxy für Exchange aktuell ein Problem mit dem senden von E-Mails mit Anhang.
    Empfang und Versand von E-Mails funktioniert super – auch der Empfang von E-Mails mit größeren Anhängen. Leider gibt es aber Probleme beim Senden. Sobald der Anhang etwas größer als 100K ist funktioniert es nicht und das iPhone meckert rum.

    Muss ich irgendwas noch im IIS anpassen. Ich habe mal von einem Problem beim Apache gelesen, hier musste der SSL Buffer angepasst werden.

    • Die „maximal zulässge Inhaltslänge“ im Anforderungsfilter (Header>Featureeinstellungen) ist vermutlich hierfür verantwortlich. Standard sind ein paar Kbyte, stell das auf deinen gewünschten Wert.

  2. HI

    Ich habe mich an die Anleitung gehalten und versuche gerade den IIS als rev. Proxy für 2 Sites (die auf 2 ver. Servern in LAN laufen) zu nutzen. Leider mache ich noch was falsch mir werden beide Sites trotz Konfig immer auf den selben Server in Lan rewrited.. eine Idee was ich falsch machen könnte. danke

    • Ohne die Konfiguration zu sehen, ist das naürlich nicht zu beantworten 🙂
      Ich würde aber einfach zwei (IIS-)Sites anlegen, diese auf die unterschiedlichen gewünschten Bindungen konfigurieren und jeweils eine (oder mehrere) Rewrite-Regel(n) pro Site erstellen.

  3. Ich arbeite seit längerem mit einer 4D (4th Dimension) Developer Pro Datenbank auf einem gemieteten STRATO Virtual Server Windows (Windows Server 2012 R2). Der HTTP-Zugang auf 4D läuft seit Beginn über ein IIS Reverse Proxy.

    Seit ein paar Tagen möchte ich nun zusätzlich den HTTPS-Zugang über ein Reverse Proxy einrichten und bin frustriert über meinen bisherigen Misserfolg und dass ich trotz stundenlangen Studierens der MS-Dokumentation und dem Lesen unzähliger Web-Beiträge mit unterschiedlichen Lösungsansätzen noch kein klares Verständnis der Logik der IIS- ARR + URL-Rewrite Funktionalität in den Kopf bekommen habe.

    Zuletzt habe ich Ihren Beitrag gefunden und wieder etwas Hoffnung geschöpft mein Problem doch noch lösen zu können.
    Ich hoffe Sie haben die Thematik noch nach gut drei Jahren im Kopf und können mir auf die Sprünge helfen.

    Mein Reverse-Proxy für HTTP hatte ich wie folgt eingerichtet:
    Sie schreiben in den „Server Proxy Settings“ nur „Enable Proxy“ ankreuzen und sonst nichts ausfüllen.
    Hier habe ich nach anderen Anleitungen nur das Proxy Chain leer gelassen u. sonst alles ausgefüllt u. am Ende „Use URL Rewrite to inspect Incoming Requests“ angekreuzt und unter Reverse Proxy meinen DNS-Namen+Port eingetragen.

    Danach habe ich mit der ausgewählten Server Maschine eine URL-Rewrite Regel mit * Platzhalter entspricht dem Muster und der Bedingung, dass {HTTPS} nicht „on“ ist angelegt und als Aktionstyp „Umschreiben“ mit meinem DNS-Namen:Port/{R0} eingetragen.
    Fragen Sie mich nicht warum, aber es funktioniert bis heute.

    Mit der Anforderung auch oder alternativ HTTPS über Reverse Proxy laufen zu lassen habe ich dann erst mal mein Zertifikat und den privaten Schlüssel im 4D-Ordner umständlich mit OpenSSL (PEM zu PFT Format) konvertiert u. dann zu IIS importiert. Dann kann ich ja keine Bindungen auswählen, wenn die gesamte Servermaschine ausgewählt ist, also habe ich die URL-Regeln neu angelegt, nachdem ich „Default Web Site“ angeklickt hatte. Dann konnte ich auch eine Bindung https anlegen und das Zertifikat ließ sich anstandslos auswählen. Danach habe ich noch „Enable SSL Offloading“ in den Server Proxy Settings angekreuzt und eine zusätzliche URL-Rewrite Regel wie die erste Regel aber mit der Bedingung {HTTPS} ist „on“ und im Reverse Proxy Feld den entsprechenden SSL-Port der 4D Datenbank.

    Nur danach hat nichts mehr funktioniert- nur noch Timeouts, weder HTTP noch HTTPS. Ich musste die Bindung wieder löschen und den gesamten Windows Server neu starten, um meinen HTTP-Zugang wiederherzustellen. Das war eine lange Nacht, die ich nicht nochmal erleben will- dazu werd ich schon zu alt.

    Bevor ich also jetzt alles nach Ihrer Anleitung umbaue, möchte ich gerne ein paar Fragen verstehen:
    • woher weiß IIS, dass Sie mit SSL offloading arbeiten wollen, wenn Sie das Formular „Server Proxy Settings“ leer lassen.
    • warum erstellen Sie eine http/https-Bindung zur „Default Web Site“ um dann anschließend die Rewrite-Regel unter Server Farm zu erstellen?
    • kann ich mit Ihrer Anleitung dann nur noch per HTTPS Anfrage arbeiten, oder geht auch noch HTTP?

    Danke und Grüße

    • > Das war eine lange Nacht, die ich nicht nochmal erleben will- dazu werd ich schon zu alt.
      Dann besser einen IT’ler mit IIS-Hintergrund beauftragen 😉

      > • woher weiß IIS, dass Sie mit SSL offloading arbeiten wollen, wenn Sie das Formular „Server Proxy Settings“ leer lassen.
      Das ist kein Feld, sonder eine ganze Settings-Pane. In den ARR-Regeln gibt es den Haken „SSL-Offloading aktivieren“.

      > • warum erstellen Sie eine http/https-Bindung zur „Default Web Site“ um dann anschließend die Rewrite-Regel unter Server Farm zu erstellen?
      In der aktuellen Anleitung (https://www.ugg.li/schritt-fuer-schritt-windows-server-2019-iis-10-als-reverse-proxy-mit-ssl-offloading/) ist die Rede von dem Best-Practice, eine eigene Site anzulegen. Eine Farm braucht man nur dann, wenn man eine Farm betreiben möchte.

      > • kann ich mit Ihrer Anleitung dann nur noch per HTTPS Anfrage arbeiten, oder geht auch noch HTTP?
      die Redirect-Regel ist natürlich optional.

      • Sorry, ich hatte gar nicht gesehen, dass Sie erst kürzlich eine Neuauflage der Anleitung für Windows-Server-2019 erstellt haben.

        In Ihrer Anleitung aus 2017 schreiben Sie

        < „Enable Proxy“ einschalten. Sonst hier nichts ausfüllen, vor allem das Feld für die Proxy-Chain leer lassen.>>

        Das hatte ich so interpretiert, dass eben auch das Ankreuzfeld „Enable SSL offloading“ nicht angekreuzt werden soll. Ok, das hatte ich dann falsch interpretiert wie ich in Ihrer neuen Anleitung für Server-2019 sehe, in der Sie explizit schreiben, dass es angekreuzt werden muss.
        Damit gehe ich auch davon aus, dass ich das nachfolgende Feld „Reverse Proxy“ mit dem DNS-Namen:Port oder ip:Port der 4D-Datenbank für HTTP-Zugang eintragen muss, richtig?

        Danke

  4. Ich sehe gerade, dass mein Beitrag von gestern Abend verschwunden ist. Kann es sein, dass Akismet ihn gelöscht hat, weil er eine vorgegebene Länge überschritten hat?
    Der Beitrag bestand aus 3116 Zeichen u. 25 Zeilen.

    Danke und Grüße

    • > Ich sehe gerade, dass mein Beitrag von gestern Abend verschwunden ist.
      Nicht ganz verschwunden, aber WordPress zeigt einem Nutzer „eigene“ Beiträge 24 Stunden lang, obwohl diese noch nicht freigegeben sind.

      > Kann es sein, dass Akismet ihn gelöscht hat,
      Nein 🙂 Ist hier nicht im Einsatz, wir nutzen etwas anderes.

      > Der Beitrag bestand aus 3116 Zeichen u. 25 Zeilen.
      Das ist mal viel Text – der Beitrag ist wieder da! Vielen Dank 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.