SSL для определенных страниц / шаблонов URL в tomcat - PullRequest
5 голосов
/ 26 ноября 2010

Я недавно настроил tomcat 6 с SSL и аутентификацией клиента, но единственный способ, которым я мог это сделать, - это изменение файлов конфигурации сервера (web.xml, server.xml).Но так как я не имею полного контроля над сервером развертывания, я хотел бы настроить все только для некоторых страниц или шаблонов URL моего приложения без изменения основных файлов конфигурации.

Например: Главный сервер:

  • Приложение 1 -> HTTP
  • Приложение 2 -> HTTP
  • MyApplication -> HTTPS

Если кто-то знает, как это сделать, скажите, пожалуйста.

Ответы [ 2 ]

9 голосов
/ 26 ноября 2010

Единственный способ запустить https - написать соответствующий соединитель в файле server.xml под тегом <service>.После настройки соединителя вы можете получить доступ ко всем приложениям на сервере с помощью http или https.Разница лишь в том, какой разъем используется.Обычно коннекторы для http и https выглядят так:

<Connector port="80" protocol="HTTP/1.1"
           maxThreads="150" connectionTimeout="20000"
           redirectPort="443"
           URIEncoding="UTF-8" compression="on"/>

<Connector port="443" protocol="HTTP/1.1"
           maxThreads="150" connectionTimeout="20000"
           SSLEnabled="true" scheme="https" secure="true"
           keystoreFile="conf/.keystore"
           keystorePass="changeit"
           clientAuth="false" sslProtocol="TLS"
           URIEncoding="UTF-8" compression="on"/>

Затем вы можете заставить свое приложение всегда использовать https, добавив тег transport-guarantee к web.xml, что в итоге будет выглядеть примерно так:*

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Administrators</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>Administrators</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

Вы можете изменить transport-guarantee для различных веб-ресурсов, которые вы определяете.Таким образом, позволяя вам защищать определенные части сайта, а не другие.

В самом конце наличие разъема в server.xml не заставляет вас использовать https для всех приложений.Позволяет использовать только https-разъем.

0 голосов
/ 26 ноября 2010

В дополнение к ответу @ rmarimon, если вы не хотите изменять server.xml , вам придется написать Filter, чтобы проверить URL-адреса вашего приложения и перенаправить обратно на http / https в зависимости от ситуации.

Однако для фильтра все равно потребуется определение и <filter-mapping> в web.xml

...