У меня есть сервер Apache на удаленном VPS. У меня открыт только порт 80 и 443. В настоящее время я использую порт 443 для SSH и 80 для HTTP.
Я хочу, чтобы порт 80 использовал HTTPS, а не HTTP. Все решения, которые я видел, заключались в перенаправлении HTTP на HTTPS следующим образом:
Redirect permanent / https://mywebsite.com/
но я не думаю, что это сработает.
Это не сработает, если вы сохраните ssh на порту 443, но если вы переместите его на другой порт, это сработает.
Конечно, вы можете настроить Apache для использования HTTPS на порту 80, но это будет означать, что вашим пользователям придется явно указывать порт для использования, например https://www.example.com:80/yourfile.html потому что обычно браузер ожидает передачи http на порт 80 и https на порт 443. Кроме того, пользователи могут столкнуться с проблемами с брандмауэрами, которые делают то же предположение и блокируют https на порту 80.
Измените свой SSH-порт на другой. Честно говоря, я оставляю свое значение по умолчанию 22 - я не вижу причин менять это, хотя многие люди рекомендуют его менять. Это действительно затрудняет определение порта SSH, если вы его измените, но это возможно.
Кроме того, вам необходимо обслуживать Apache на 80 (http) и Apache SSL на 443 (HTTPS). Если вы хотите принудительно перенаправить HTTP -> HTTPS, настроив перенаправление на стороне Apache, однако, если вы не пытаетесь принудительно использовать http-> https, вам просто нужно убедиться, что SSL настроен и включен на Apache (перенаправление не требуется, если вы не принудительно используете http -> https).
Порты по умолчанию:
22 -> SSH 80 -> HTTP 443 -> HTTPS
Рекомендация:
Никогда не настраивайте службу для использования хорошо известный порт другого сервиса.
Просто настройте виртуальный хост для обработки всех входящих запросов с порта 80. Примерно так:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/apache2/pathtocert/Cert
SSLCertificateKeyFile /etc/apache2/pathtoprivateKey/Privk
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Хотя это нарушит входящие HTTP-запросы, это послужит вашей цели - сделать порт 80 безопасным (сделав так, чтобы любой, кто имеет к нему доступ, не сможет сделать это небезопасно).
Примечание: Метод перенаправления по-прежнему подвергает ваших пользователей атаке MITM.