Назад | Перейти на главную страницу

Как закрыть соединение, если пользователь заходит на сайт через порт 443 на http?

Как передать пользователю сообщение об ошибке сброса подключения, если пользователь заходит на веб-сайт, например http://example.com:443, вместо того, чтобы выдать следующую ошибку:

Плохой запрос

Ваш браузер отправил запрос, который этот сервер не может понять.
Причина: вы говорите по обычному протоколу HTTP с портом сервера с поддержкой SSL.
Вместо этого используйте схему HTTPS для доступа к этому URL, пожалуйста.

Вышеупомянутая ошибка предоставляется Apache пользователю, которого я не хочу. Вместо этого я просто хочу разорвать соединение и не давать текстового ответа. Возможно ли это, потому что на многих сайтах есть эта функция. Заранее спасибо. (Кроме того, я не мог ничего попробовать сам, потому что понятия не имел, как это работает, так что я могу реализовать это сам, если смогу).

В чем-то похоже, но все равно не отвечает на мой вопрос: Обслуживающий порт 443 через http создает ошибку 400 Bad Request вместо перенаправления, но упоминается: «Если вы попробуете такие запросы с другими серверами, они либо закроют соединение без каких-либо ошибок, либо просто зависнут, потому что они все еще надеются получить подтверждение TLS от клиента», поэтому мой вопрос в том, как закрыть соединение, если пользователь обращается к http://example.com:443.

На всякий случай:

Обратите внимание, что я хочу закрыть соединение, когда пользователь обращается к порту 443 на http: // вместо https: //. Я не хочу, чтобы apache отображал сообщение о неверном запросе. Я хочу закрыть соединение, потому что упоминается, что невозможно перенаправить 443 с http: // на https: //. Если есть какой-либо способ сделать это, дайте мне знать (кроме HSTS, которому я не желаю доверять). Думаю, это будет сделано с помощью брандмауэра (не уверен). Я также видел, как это делает cPanel, но я не использую cPanel для каких-то других целей, поэтому, пожалуйста, не просите меня об этом.

Также:

Невозможно изменить страницу 400 неверных запросов, если вы не измените исходный код Apache, поэтому перенаправление с http на https будет невозможно. Я не думаю, что мне разрешено изменять исходный код Apache.

Я также видел это бегство curl http://www.google.com:443 говорит curl: (52) Empty reply from server, поэтому отправки пустого ответа должно быть достаточно, чтобы соединение было остановлено, верно? Я не уверена. Но, может быть, да, если да, то как? (Не отвечайте на этот вопрос, если есть другой метод отключения соединения).

Чтобы было ясно: я прошу что-то вроде sudo ufw deny out 443 http (может быть недействительным) или что-то в этом роде.

Интересный. А как насчет этого:

<VirtualHost *:443>
    <Location />
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
    </Location>

Это запретит трафик на порт 443 для чего-либо, кроме localhost.

Но на самом деле я думаю, что вы, вероятно, захотите (?) Просто перенаправить все HTTP-запросы на https. После перенаправления 443 будет избыточным.