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

10

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

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

RewriteEngine On

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

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

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

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

Ответы:

16

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

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

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

sstendal
источник
4

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

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

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

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

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

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

источник
Спасибо за предложение. Даже с учетом этого в .htaccess, он не использует страницу, которую я ввожу для ошибки 500 для этой конкретной ошибки. Кажется, что, возможно, ничего в .htaccess не активируется из-за первоначальной ошибки.