somann
Goto Top

Windows Server 2019 - URL Rewrite von HTTP zu HTTPS mit benutzerdefinierten Ports

Hallo,

ich habe ein Problem mit einem Windows Server 2019 Standard, bei dem ich nicht mehr weiter weiß.

Beschreibung des Problems

Die Webseite, welche mit dem IIS Manager bereitgestellt wird, soll über das Internet bei Eingabe der Domain erreichbar sein und automatisch von HTTP zu HTTPS weiterleiten. Des Weiteren soll bei einem Aktualisieren der Seite im Browser immer auf die Domain ohne Unterpfade weitergeleitet werden. Also folgendermaßen:

https://www.test.de/foo/bar -> Browser-Refresh -> https://www.test.de

Aufbau des Netzwerks:

Internet -> FritzBox -> Server

- Die Ports habe ich in der FritzBox folgendermaßen gemappt:
- HTTP-Port 80 -> 20100 (Server)
- HTTPS-Port 443 -> 20200 (Server)

Ist-Zustand

- Die Domain verweist auf die öffentliche, feste IPv4 der FritzBox
- Diese Domain ist bereits beim Anbieter mit einem SSL-Zertifikat versehen
- Das SSL-Zertifikat habe ich ebenfalls auf dem Server erfolgreich installiert
- Die Webseite ist über die öffentliche IP-Adresse und auch über die Domain (Port 80) erreichbar -> http://www.test.de
- Das Feature URL Rewrite 2.0 habe ich installiert und folgende Regel für den Rewrite nach einem Browser-Refresh hinzugefügt (funktioniert):
<?xml version="1.0" encoding="UTF-8"?>  
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="AfterReloadToMainPage" stopProcessing="true">  
          <match url=".*" />  
          <conditions logicalGrouping="MatchAll">  
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />  
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />  
          </conditions>
          <action type="Rewrite" url="/" />  
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>
- Als nächstes habe ich dann eine Regel für den Rewrite von HTTP zu HTTPS hinzugefügt (Hier gefunden...)
<rule name="HTTP to HTTPS on different SSL Port" enabled="true" stopProcessing="true">  
  <match url="(.*)" ignoreCase="true" />  
  <conditions logicalGrouping="MatchAll" trackAllCaptures="true">  
    <add input="{HTTPS}" pattern="off" />  
    <add input="{HTTP_HOST}" pattern="^(.*):20100" />  
  </conditions>
  <action type="Redirect" url="https://{SERVER_NAME}:20200/{R:0}" appendQueryString="false" />  
</rule>

Und genau das funktioniert nicht.

Wenn ich lokal auf dem Server im Browser die URL http://localhost:20100 eingebe, wird http zwar zu https umgeschrieben, aber der Port dahinter bleibt bei 20100 -> Fehlercode: SSL_ERROR_RX_RECORD_TOO_LONG

Wenn ich lokal auf dem Server im Browser die URL https://localhost:20200 eingebe, kommt logischerweise der Fehlercode: SSL_ERROR_BAD_CERT_DOMAIN
(Fehlermeldung: Das verwendete Zertifikat gilt nicht für localhost:20200. Das Zertifikat gilt nur für folgende Namen: test.de, www.test.de)

Wenn ich dann eine Ausnahme für das Zertifikat hinzufüge, komme ich zwar auf die Seite mit https, aber eben nicht über die Domain.

Als letzten Schritt habe ich noch nach dieser Anleitung das Feature "Ablaufverfolgungsregeln für Anforderungsfehler" installiert und konfiguriert, in der Hoffnung, dass ich dann im Ordner "%SystemDrive%\inetpub\Logs\FailedReqLogFiles\" eine Fehlermeldung sehen kann - der Ordner bleibt aber leider leer.

Ich denke mir, dass ich schon sehr nah an der Lösung dran bin - kann mir dabei jemand weiter helfen?

Vielen Dank im Voraus!


Hier ein Screenshot der Bindungen:

bildschirmfoto 2021-12-19 um 15.17.55

Content-Key: 1637000119

Url: https://administrator.de/contentid/1637000119

Printed on: May 10, 2024 at 22:05 o'clock

Member: 7Gizmo7
7Gizmo7 Dec 19, 2021 at 18:19:50 (UTC)
Goto Top
Hi, welches Zertifikat liegt denn hinter der https Bindung ?

Mit freundlichen Grüßen
Member: somann
somann Dec 19, 2021 at 18:35:08 (UTC)
Goto Top
Hey,

danke für deine Antwort.

Der Aussteller vom Zertifikat:

CN = Thawte RSA CA 2018
OU = www.digicert.com
O = DigiCert Inc
C = US

Signaturalgorithmus: sha256RSA
Öffentlicher Schlüssel: RSA (2048 Bits)

Oder meinst du was anderes?

VG
Member: somann
somann Dec 19, 2021 at 19:06:01 (UTC)
Goto Top
Hey, ich habs!

Total einfach - ich hab vor lauter Konfigurieren einfach nur vergessen den Port für HTTPS auch in der Firewall von Windows freizugeben. War nur der HTTP Port offen.

Interessant ist auch, dass die Regel für das URL Rewriting jetzt deaktiviert ist und die Weiterleitung von HTTP zu HTTPS automatisch funktioniert. Ich muss nur "test.de" eingeben und die URL wird zu "https://test.de" umgeschrieben. Genau wie's sein soll.

Danke jedenfalls für dein Denkanstoß!

VG