Как перенаправить с HTTPS на HTTP перед ошибкой сервера?


10

Я использовал для работы веб-сайт с сертификатом SSL, но прекратил использовать сертификат SSL. Проблема заключается в том, что большинство внешних ссылок на сайт используют префикс https: //.

Я пробовал https: // перенаправить на http: // в файле .htaccess:

RewriteEngine On

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

Но, как указывалось в другом месте, кажется, что сервер пытается получить сертификат перед активацией перенаправления. Следовательно, ошибка отображается до того, как перенаправление будет выполнено. Ошибка является либо предупреждением о том, что срок действия сертификата истек, либо, если я удаляю запрос на подпись сертификата, то ошибкой является то, что SSL получил запись, превышающую максимально допустимую длину.

Есть ли способ разрешить перенаправление входящих ссылок правильно?


1
Как мне кажется, вы выяснили, что SSL согласовывается до того, как будут выполнены любые HTTP-запросы. Я думаю, у вас возникнут проблемы с тем, чтобы заставить его работать так, как вы хотите, но я голосую за переход на ServerFault.com на случай, если кто-то найдет лучший ответ.
Майкл

Кажется, что это может быть трудно достичь. Потерять ссылки, созданные по всему Интернету, - настоящий облом, и, что еще хуже, посетители считают, что сайт был взломан или исчез.

Ответы:


16

Разница между http и https заключается в том, что запросы https отправляются через ssl-зашифрованное соединение. Ssl-зашифрованное соединение должно быть установлено между браузером и сервером, прежде чем браузер отправит http-запрос.

Https-запросы на самом деле являются http-запросами, которые отправляются через ssl-шифрованное соединение. Если сервер отказывается установить ssl-шифрованное соединение, то браузер не будет иметь соединения для отправки запроса. Браузер и сервер не смогут общаться друг с другом. Браузер не сможет отправить URL-адрес, к которому он хочет получить доступ, и сервер не сможет ответить перенаправлением на другой URL-адрес.

Так что это невозможно. Если вы хотите ответить на ссылки https, вам нужен ssl-сертификат.


4

Нет, если бы можно было перенаправить с https на http без реального сертификата, это было бы серьезным недостатком безопасности.

Представьте, что злоумышленник каким-то образом способен перенаправить защищенный сервер банка на небезопасное соединение, не требуя настоящего https-сертификата для сайта, он позволит злоумышленнику взломать соединение, не зная об этом пользователя.

Единственное решение, которое я вижу, - это получить дешевый сертификат, а затем выполнить обычное перенаправление с сайта HTTPS (который пользователь не может получить без действительного сертификата) на обычный сайт для этих внешних ссылок.


Правильно, так лучше. Жаль, что нет никакого способа установить одобренное переопределение в качестве владельца сайта.

-2

Вы должны создать в своем .htaccess

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

Спасибо за предложение. Даже с учетом этого в .htaccess, он не использует страницу, которую я ввожу для ошибки 500 для этой конкретной ошибки. Кажется, что, возможно, ничего в .htaccess не активируется из-за первоначальной ошибки.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.