.htaccess redirect wird nur nach einer Browserwarnung ausgeführt

8

Ich habe eine Rewrite-Regel, die HTTPS und www erzwingt. Das SSL-Zertifikat gilt für die www-Version der Site. Die gesamte Website muss HTTPS sein.

Das Problem ist, dass, wenn die Anfrage Ссылка lautet, der Browser eine Warnseite anzeigt, bevor die Weiterleitung ausgeführt werden kann. ("Diese Verbindung ist nicht vertrauenswürdig" in Firefox und "Dies ist wahrscheinlich nicht die Website, die Sie suchen!" In Chrome)

Wenn der Benutzer in Firefox eine Ausnahme hinzufügt oder den Fehler in Chrome ignoriert, wird die Rewrite-Regel ausgeführt und sie werden mit einer 100% -Sicherheits-Seite zur www-Version der Website umgeleitet.

%Vor%

Ich habe die Regeln auf der Website sowie auf Ссылка

getestet

Wie kann ich die Weiterleitung vor der Browserwarnung ausführen?

    
Jonathan 24.07.2012, 22:25
quelle

2 Antworten

8

Die Umleitung von https://example.com nach https://www.example.com kann nur stattfinden, nachdem der Client eine erste erfolgreiche Anfrage an https://example.com gemacht hat.

Dies liegt daran, dass HTTPS HTTP über TLS / SSL ist (siehe RFC 2818 ), das zuerst SSL / TLS einrichtet Verbindung, bevor ein HTTP-Verkehr gesendet wird. mod_rewrite wird immer angewendet, nachdem die SSL / TLS-Verbindung hergestellt wurde. Dies wäre eigentlich ein Sicherheitsproblem, da ein Angreifer den Client neu schreiben und umleiten kann, bevor das Zertifikat verifiziert wurde. Selbst wenn das TLS-Upgrade innerhalb von HTTP (RFC 2817, das praktisch nie verwendet / unterstützt wird und nicht https ist), sollte die Umleitung immer noch von einer vertrauenswürdigen Entität kommen.

Damit diese erste Verbindung funktioniert, muss der Server unter https://example.com über ein Zertifikat verfügen, das für example.com gültig ist. Anderenfalls tritt diese Verbindung nicht auf (und der Server sendet keine Umleitungsantwort).

Um Ihr Ziel zu erreichen, müssen Sie für https://example.com ein Zertifikat anfordern, das für example.com gültig ist, und für https://www.example.com ein Zertifikat anfordern, das für www.example.com gültig ist.

Es gibt zwei Lösungen:

  • Verwenden von zwei verschiedenen Zertifikaten für jeden Host, entweder durch Verwendung eindeutiger IP-Adressen oder durch Verwendung der Servernamenanzeige. Der Nachteil hier ist, dass nicht alle Clients SNI unterstützen, selbst wenn es häufiger wird.
  • Verwenden eines einzelnen Zertifikats, das sowohl für example.com als auch für www.example.com gültig ist. Dies kann erreicht werden, indem ein Zertifikat mit mehreren SAN-DNS-Einträgen (Subject Alternative Name) erstellt wird (es funktioniert nicht nur mit *.example.com , da der Punkt nicht Teil des Platzhaltermusters ist).

Letzteres ist sicherlich die einfachste Lösung. Es ist durchaus üblich, dass Zertifizierungsstellen Zertifikate mit SAN-Einträgen für example.com und www.example.com erstellen, wenn Sie sich für das eine oder andere bewerben, manchmal ohne zusätzliche Gebühr.

    
Bruno 25.07.2012, 11:20
quelle
0

In diesem Beitrag wird Ihr Problem behandelt und die folgende Antwort gegeben:

  

Sie benötigen ein Zertifikat für example.com, wenn Sie das Problem mit dem ungültigen Zertifikat vermeiden möchten. Aus Sicherheitsgründen sind Weiterleitungen vor der Authentifizierung nicht erlaubt.

Eine andere Option könnte sein, ein Platzhalter-Cert zu erhalten, der es Ihnen erlaubt, nach *.example.com zu suchen. (Scheinbar wird das nicht funktionieren. Danke @Giel)

Sie könnten http://example.com/ redirect auf https://www.example.com/ setzen, aber das hilft Ihnen möglicherweise nicht, wenn Sie bereits https://example.com/ besuchen.

    
Flimzy 24.07.2012 22:28
quelle

Tags und Links