Jak przekierować z HTTPS na HTTP przed błędem serwera?

10

Kiedyś prowadziłem stronę internetową z certyfikatem SSL, ale przestałem używać certyfikatu SSL. Problem polega na tym, że większość zewnętrznych linków do strony używa prefiksu https: //.

Próbowałem przekierowania https: // do http: // w pliku .htaccess:

RewriteEngine On

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

Ale wydaje się, jak już wspomniano gdzie indziej, że serwer próbuje odzyskać certyfikat przed aktywacją przekierowania. Dlatego przed wyświetleniem przekierowania pojawia się błąd. Błąd jest albo ostrzeżeniem o wygaśnięciu certyfikatu, albo jeśli usunę żądanie podpisania certyfikatu, to błąd, że SSL otrzymał rekord przekraczający maksymalną dopuszczalną długość.

Czy jest jakiś sposób, aby umożliwić prawidłowe przekierowanie połączeń przychodzących?

użytkownik981178
źródło
1
SSL, jak sądzę, dowiedziałeś się, jest negocjowany przed wysłaniem jakichkolwiek żądań HTTP. Myślę, że będziesz miał problem z tym, aby działało tak, jak chcesz, ale głosuję za przejściem na ServerFault.com, na wypadek gdyby ktoś miał lepszą odpowiedź.
Michael
Wydaje się, że osiągnięcie tego może być trudne. Utrata linków zgromadzonych w Internecie jest prawdziwym szaleństwem, a co gorsza, dla odwiedzających, którzy myślą, że witryna została naruszona lub zniknęła.

Odpowiedzi:

16

Różnica między http a https polega na tym, że żądania https są wysyłane przez połączenie szyfrowane ssl. Połączenie szyfrowane ssl musi zostać ustanowione między przeglądarką a serwerem, zanim przeglądarka wyśle ​​żądanie HTTP.

Żądania HTTP są w rzeczywistości żądaniami HTTP wysyłanymi za pośrednictwem szyfrowanego połączenia ssl. Jeśli serwer odmówi nawiązania połączenia szyfrowanego ssl, przeglądarka nie będzie mieć połączenia, z którego mógłby wysłać żądanie. Przeglądarka i serwer nie będą mogły rozmawiać ze sobą. Przeglądarka nie będzie mogła wysłać adresu, do którego chce uzyskać dostęp, a serwer nie będzie mógł odpowiedzieć przekierowaniem na inny adres URL.

To nie jest możliwe. Jeśli chcesz odpowiadać na linki https, potrzebujesz certyfikatu ssl.

sstendal
źródło
4

Nie, gdyby możliwe było przekierowanie z https na http bez prawdziwego certyfikatu, byłby to poważny błąd bezpieczeństwa.

Rozważmy, że przestępca może w jakiś sposób sprawić, że bezpieczny serwer banku przekieruje do niepewnego połączenia bez potrzeby posiadania prawdziwego certyfikatu https dla witryny, pozwoli to przestępcy przejąć połączenie bez wiedzy użytkownika.

Jedyne rozwiązanie, jakie widzę, to uzyskanie taniego certyfikatu, a następnie normalne przekierowanie ze strony HTTPS (do której użytkownik nie może uzyskać dostępu bez ważnego certyfikatu) na zwykłą stronę dla tych zewnętrznych linków.

Joachim Isaksson
źródło
Racja, tak jest lepiej. Szkoda, że ​​nie ma sposobu na skonfigurowanie zatwierdzonego zastąpienia jako właściciela witryny.
-2

Powinieneś utworzyć w swoim .htaccess

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

źródło
Dzieki za sugestie. Nawet z tym w .htaccess nie korzysta ze strony, którą wpisuję dla błędu 500 dla tego konkretnego błędu. Wygląda na to, że być może nic w .htaccess nie jest aktywowane z powodu błędu początkowego.