Como ativar ou desativar seletivamente SSL para algumas URLs no Tomcat 7

1

Estou usando SSL no Tomcat 7, crie um keystore e configure server.xml e também configure em web.xml como abaixo

<security-constraint>
         <!-- SSL enforced -->
        <web-resource-collection>
            <web-resource-name>SSL</web-resource-name>
            <url-pattern>/inspectionGp/*</url-pattern>
            <url-pattern>/inspection/*</url-pattern>
            <url-pattern>/inspGpDt/*</url-pattern>
            <url-pattern>/inspDt/*</url-pattern>
        </web-resource-collection>
        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
</security-constraint>

Isso funciona para SSL, essas URLs restritas são forçadas a usar somente SSL, mas outras URLs também podem usar HTTP e HTTPS, é estranho, não quero usar HTTPS para as URLs que não estão configuradas em <url-pattern> . Eu uso <transport-guarantee>NONE</transport-guarantee> , que resultará em todas as URLs compatíveis com HTTP e HTPPS. Então, alguém pode ajudar a explicar como posso resolver isso?

    
por James 30.01.2015 / 04:01

1 resposta

4

Definitivamente considere o uso de SSL para tudo. Muitos de nossos clientes estão indo nessa direção e eu recomendo totalmente.

Se você misturar HTTP / HTTPS e quiser manter o estado da sessão, precisará contornar alguns dos mecanismos do Tomcat que tentam evitar isso (cookies somente seguros para JSESSIONID). Uma vez que você tenha feito isso com sucesso, alguém poderia seqüestrar uma sessão do HTTP e realizar ações no lado HTTPS.

Tudo o que disse, se você quiser ter esse nível de controle refinado, você pode considerar o uso de um ServletFilter. O filtro pode ser aplicado primeiro no web.xml e ser aplicado ao dispatcher "REQUEST" no padrão de URL "/ *" (ou apenas nos padrões em que você precisa fazer essa determinação).

O filtro então examinará a solicitação. Se for um caminho que deve ser HTTPS, verifique o request.isSecure (). Se não for seguro, ele emitirá um redirecionamento 301 para o lado HTTPS, certificando-se de manter o caminho completo da solicitação e os parâmetros de URL. Da mesma forma para redirecionar de HTTPS para HTTP.

Sou apaixonada pelos filtros servlet. Eles são o canivete suíço de manipulação de pedidos. Não há nada que você não possa fazer. Mais importante ainda, o comportamento é parte do aplicativo e não uma personalização para a configuração do Tomcat. Você pode implantar o aplicativo em qualquer lugar e ele "simplesmente funcionará".

    
por 30.01.2015 / 04:51

Tags