Допустимо ли запускать веб-сайт, который обслуживает только HTTPS, а не HTTP. Рассмотрим ситуации, когда в адресной строке вводятся простые доменные имена. Обычно сайты перенаправляют пользователя на HTTPS-версию.
Есть веская причина хотеть предоставлять только HTTPS. Рассмотрим этот сценарий:
Зависит от сайта.
Ситуация, описанная выше, может быть предотвращена только в том случае, если сервер вообще не принимает соединение через порт 80; удобная переадресация или даже страница с ошибкой с надписью «используйте https!» позволит отправить незашифрованный запрос API. Конечно, если это не сработает, звонящий должен заметить и исправить свою ошибку после одной неудачной попытки - и, надеюсь, он не тестирует конфиденциальные данные.
Приемлема ли эта единственная незащищенная попытка связи (надеюсь, с неконфиденциальными данными) полностью зависит от ваших потребностей в безопасности.
Если сайт используется только для вызовов API, то вполне нормально оставить порт 80 выключенным.
Если пользователи будут посещать сайт в браузере (вводя адрес вручную), то не ожидайте, что сможете оставить порт 80 выключенным без замешательства и раздражения пользователей.
Я действительно не вижу веских причин не делать этого. Если ваш сайт должен быть полностью защищен, ничто не мешает вам работать только через SSL.
Вот КБ о том, как это сделать: Apache: перенаправить http на https Безопасное соединение Apache - принудительное подключение HTTPS
Чтобы разрешить только SSL-соединения, вы также можете использовать SSLRequireSSL в конфигурации вашего сервера.
(Не уверен, что это подойдет вам, так как он перенаправит ВЕСЬ трафик с порта 80 на порт 443 для всего вашего сервера, но это также может сработать):
Измените iptables, чтобы перенаправить порт 80 на порт 443:
--iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
--iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
--iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 443