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

Apache и Tomcat & mod_jk SSL-перенаправление только на определенные страницы

У нас есть один сервер Windows, на котором работают Apache и Tomcat с включенным mod_jk. Приложение Tomcat работает отлично, как и отдельное приложение PHP (под Apache). Мы установили коммерческий сертификат SSL под Apache и создали директиву в файле httpd-ssl.conf. Все это прекрасно работает.

Если мы перейдем прямо к https://www.domain.com/app/foo/bar он работает нормально, поэтому мы знаем, что сертификат работает. Наша проблема в том, что мы хотим, чтобы определенные страницы (особенно страницы JSP) загружались по https. Мы пробовали помещать файлы .htaccess в соответствующие папки (где, как мы думаем, живут сервлеты), и это ничего не дает, по-видимому, поскольку Tomcat не обслуживает страницы, а Apache (это правильное мышление?). Итак, мы не понимаем, где мы должны настроить правила (?), Чтобы принудительно использовать https для определенных страниц JSP, а не для других. Предположительно Apache должен справиться с этим, но, поскольку файл .htaccess не работает, какой еще вариант есть?

Мне интересно, настроен ли apache / mod_jk так, чтобы запросы соответствовали *.jsp или /webappdir/*.jsp передаются в tomcat до того, как ваши изменения .htaccess получат возможность выполнить перенаправление на https.

я считать вы захотите добавить ограничения безопасности в свой tomcat web.xml, чтобы ваши запросы, соответствующие шаблону URL /webappdir/*.jsp, были настроены на использование КОНФИДЕНЦИАЛЬНОЙ транспортной гарантии. (По крайней мере, это то, что, по-видимому, предполагают спецификации сервлета и jsp, которые вы захотите сделать) У меня сейчас нет системы, с которой можно было бы поиграть, но, возможно, что-то вроде следующего внутри вашего web.xml может работай:

// Sample Security Constraint
<security-constraint>
  <web-resource-collection>
    <web-resource-name>require ssl</web-resource-name>
    <url-pattern>/webappdir/*.jsp</url-pattern>
    <user-data-constraint>
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
  </web-resource-collection>
</security-constraint>

Предостережение: я не уверен на 100% в шаблоне URL - вам, возможно, придется немного поэкспериментировать. Если вы не хотите, чтобы ssl зашифровал все ваши jsp, вы можете получить гораздо более длинный список записей шаблонов URL. Кроме того, я не помню, выдает ли tomcat перенаправление 301, предлагая браузеру повторно перейти по ссылке с помощью https, или если tomcat выдает какой-то другой код состояния.

Конечно, ssl не добавит который много накладных расходов, поэтому вы можете просто зашифровать весь сайт. Это, вероятно, сделает ваших посетителей, более заботящихся о безопасности, намного счастливее.