2010-06-30 25 views
5

Tengo un servidor Tomcat 6 y quiero que casi todo esté detrás de SSL, pero quiero que se pueda acceder a un servlet mediante no-ssl. ¿Es posible configurar Tomcat de esta manera? Actualmente está configurado para reenviar todas las solicitudes al puerto seguro.Uso de SSL y no SSL en Tomcat 6

Respuesta

5

Una forma de lograr esto es editando el web.xml para su aplicación web.

Asumo que ya tendrá la aplicación web creado para obligar a todas las solicitudes HTTPS con <transport-guarantee> CONFIDENTIAL, como a continuación

<security-constraint> 
     <display-name>Example Security Constraint</display-name> 
     <web-resource-collection> 
     <web-resource-name>Protected Area</web-resource-name> 
    <!-- Define the context-relative URL(s) to be protected --> 
     <url-pattern>/*</url-pattern> 
    <!-- If you list http methods, only those methods are protected --> 
    <http-method>DELETE</http-method> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    <http-method>PUT</http-method> 
     </web-resource-collection> 
     <auth-constraint> 
     <!-- Anyone with one of the listed roles may access this area --> 
     <role-name>tomcat</role-name> 
    <role-name>role1</role-name> 
     </auth-constraint> 
     <user-data-constraint> 
<transport-guarantee>CONFIDENTIAL</transport-guarantee> 
</user-data-constraint> 
    </security-constraint> 

Ahora añadir otro bloque por debajo de este para el servlet se desea anular https para.

<security-constraint> 
<web-resource-collection> 
<web-resource-name>Unsecured resources</web-resource-name> 
<url-pattern>/jsp/openforall.jsp</url-pattern> 
</web-resource-collection> 
<user-data-constraint> 
<transport-guarantee>NONE</transport-guarantee> 
</user-data-constraint> 
</security-constraint> 

Esta URL openforall.jsp solo ahora será accesible a través de http.

Nota: Esta URL también seguirá estando disponible en https si alguien accede de esa manera.