Wie leite ich vor einem Serverfehler von HTTPS zu HTTP um?

10

Früher habe ich eine Website mit einem SSL-Zertifikat betrieben, das SSL-Zertifikat jedoch nicht mehr verwendet. Das Problem ist, dass die meisten externen Links zur Website das Präfix https: // verwenden.

Ich habe versucht, die Umleitung von https: // nach http: // in der .htaccess-Datei durchzuführen:

RewriteEngine On

RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}

Wie an anderer Stelle erwähnt, versucht der Server jedoch, das Zertifikat abzurufen, bevor die Umleitung aktiviert wird. Daher wird ein Fehler angezeigt, bevor die Umleitung jemals durchgeführt wird. Der Fehler ist entweder eine Warnung, dass das Zertifikat abgelaufen ist, oder, wenn ich die Zertifikatsignierungsanforderung lösche, ein Fehler, dass SSL einen Datensatz erhalten hat, der die maximal zulässige Länge überschritten hat.

Gibt es eine Möglichkeit, die eingehenden Links ordnungsgemäß umzuleiten?

user981178
quelle
1
Wie Sie wahrscheinlich herausgefunden haben, wird SSL ausgehandelt, bevor HTTP-Anforderungen gestellt werden. Ich denke, Sie werden ein Problem damit haben, dass dies so funktioniert, wie Sie es möchten, aber ich stimme dafür, auf ServerFault.com zu migrieren, falls jemand dort eine bessere Antwort hat.
Michael
Es scheint, dass dies schwierig zu erreichen sein kann. Es ist eine echte Enttäuschung, die im Internet aufgebauten Links zu verlieren, und noch schlimmer, wenn Besucher glauben, die Website sei kompromittiert oder verschwunden.

Antworten:

16

Der Unterschied zwischen http und https besteht darin, dass https-Anforderungen über eine SSL-verschlüsselte Verbindung gesendet werden. Die SSL-verschlüsselte Verbindung muss zwischen dem Browser und dem Server hergestellt werden, bevor der Browser die http-Anforderung sendet.

HTTP-Anforderungen sind tatsächlich http-Anforderungen, die über eine SSL-verschlüsselte Verbindung gesendet werden. Wenn der Server das Herstellen einer SSL-verschlüsselten Verbindung ablehnt, hat der Browser keine Verbindung zum Senden der Anforderung. Der Browser und der Server können nicht miteinander kommunizieren. Der Browser kann die URL, auf die er zugreifen möchte, nicht senden, und der Server kann nicht mit einer Weiterleitung auf eine andere URL antworten.

Das ist also nicht möglich. Wenn Sie auf https-Links antworten möchten, benötigen Sie ein SSL-Zertifikat.

sstendal
quelle
4

Nein, wenn es möglich wäre, ohne ein echtes Zertifikat von https zu http umzuleiten, wäre dies eine große Sicherheitslücke.

Stellen Sie sich vor, ein Krimineller könnte den sicheren Server der Bank auf eine unsichere Verbindung umleiten, ohne ein echtes https-Zertifikat für die Site zu benötigen. Dies würde es dem Kriminellen ermöglichen, die Verbindung zu entführen, ohne dass der Benutzer davon erfährt.

Die einzige Lösung, die ich sehen kann, besteht darin, ein billiges Zertifikat zu erhalten und dann eine normale Umleitung von der HTTPS-Site (die der Benutzer ohne ein gültiges Zertifikat nicht erreichen kann) zur regulären Site für diese externen Links durchzuführen.

Joachim Isaksson
quelle
Richtig, so ist es besser. Schade, dass es keine Möglichkeit gibt, eine genehmigte Überschreibung als Websitebesitzer einzurichten.
-2

Sie sollten in Ihrem .htaccess erstellen

ErrorDocument 500 http://anotherserer.com/errorPage.php

quelle
Danke für den Vorschlag. Selbst wenn dies im .htaccess erfolgt, wird die Seite, die ich für den 500-Fehler eingegeben habe, für diesen bestimmten Fehler nicht verwendet. Möglicherweise wird aufgrund des anfänglichen Fehlers möglicherweise nichts im .htaccess aktiviert.