2016-02-10 3 views
0

Итак, у меня есть сервер tomcat, работающий на порту 8080, и сервер Apache, работающий на портах 80 и 443. Я могу перенаправить весь сайт на https, используя эти виртуальные хосты:Перенаправить страницу HTTP на HTTPS с сервера ProxyPass на Tomcat

<VirtualHost *:80> 
    Redirect permanent/https://localhost 
</VirtualHost> 

<VirtualHost _default_:443> 
    SSLEngine on 
    SSLCertificateFile /etc/httpd/crt/localhost.crt 
    SSLCertificateKeyFile /etc/httpd/crt/localhost.key 
    ProxyRequests off 
    ProxyPreserveHost on 
    ProxyPass/http://localhost:8080/ 
    ProxyPassReverse/http://localhost:8080/ 
    ProxyPass /catdapp http://localhost:8080/ 
    ProxyPassReverse /catdapp http://localhost:8080/ 
</VirtualHost> 

Однако, я пытаюсь получить его так, чтобы он перенаправляет только HTTPS, когда URL является localhost/#/login или localhost/catdapp/#/login

Я попытался следующие:

<VirtualHost *:80> 
    Redirect permanent /#/login https://localhost/#/login 
    Redirect permanent /catdapp/#/login https://localhost/#/login 
    ProxyRequests off 
    ProxyPreserveHost on 
    ProxyPass /#/login ! 
    ProxyPass /catdapp/#/login ! 
    ProxyPass/http://localhost:8080/ 
    ProxyPassReverse/http://localhost:8080/ 
    ProxyPass /catdapp http://localhost:8080/ 
    ProxyPassReverse /catdapp http://localhost:8080/ 
</VirtualHost> 

Что не работал, пульт показал, что это было получение http://localhost/catdapp/partials/login.html поэтому я попытался изменить его к этому:

<VirtualHost *:80> 
    Redirect permanent /catdapp/partials/login.html https://localhost/catdapp/partials/login.html 
    ProxyRequests off 
    ProxyPreserveHost on 
    ProxyPass /catdapp/partials/login.html ! 
    ProxyPass/http://localhost:8080/ 
    ProxyPassReverse/http://localhost:8080/ 
    ProxyPass /catdapp http://localhost:8080/ 
    ProxyPassReverse /catdapp http://localhost:8080/ 
</VirtualHost> 

Который затем приводит к консоли FireFox выводя две ошибки: журнал доступа

GET http://localhost/catdapp/partials/login.html 301 Moved Permanently 
GET https://localhost/catdapp/partials/login.html 200 OK 

Апач :

"GET /catdapp/partials/login.html HTTP/1.1" 301 328 "http://localhost" "Mozilla/5.0 (X11; Linux x84_64; rv:38.0) Gecko/20100101 Firefox/38.0" 
"GET /catdapp/partials/login.html HTTP/1.1" 200 2054 "http://localhost" "Mozilla/5.0 (X11; Linux x84_64; rv:38.0) Gecko/20100101 Firefox/38.0" 

Любые идеи?

ответ

0

# обрабатывается на стороне клиента, в браузере - я не видел, чтобы он передавался на сервер.

Я бы прекратил беспокоиться о работе в смешанном режиме и просто безоговорочно перенаправил все на https и продолжил там: в смешанном режиме http/https вы просто откроете так много неожиданных дыр в безопасности, утечек сеанса или других, которые (в настоящее время) просто не стоит хлопот. Добавьте HSTS header в https-virtual-host, и вы даже будете в безопасности в случаях, когда вы случайно использовали неправильный протокол (как только клиент увидел заголовок HSTS, который должен быть нормой)

Будет ли это потребляют больше ресурсов на стороне сервера? Наверное, немного. Это будет иметь значение? Мера! Если у вас есть ресурсы, заслуживающие защиты, то стоит исправить целый класс ошибок, таких как утечка информации сеанса, фишинг, атаки MITM и т. Д.

Смежные вопросы