Apache Tomcat tiene la habilidad de redireccionar todo el tráfico HTTP a HTTPS lo cual hace que cualquier entrada al sitio sea segura. Pero como en el caso de Mapaprop queremos servir imágenes de las propiedades a third party feeds y sorprendentemente como en el caso de OLX no pueden manejar requests HTTPS para las imágenes.
Editando el archivo de configuración server.xml podemos redireccionar todo el tráfico a HTTPS de la siguiente manera:
<Connector port="8080" protocol="HTTP/1.1" redirectPort="443"/> <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/keystore" keystorePass="somepass"/>
Ahora para evitar de manera permanente el protocolo HTTPS podemos editar el archivo web.xml de cada webapp que queremos servir y agregar el siguiente security constraint:
<!-- Require HTTPS for everything except /img (favicon) and /css. --> <security-constraint> <web-resource-collection> <web-resource-name>Private</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> <security-constraint> <web-resource-collection> <web-resource-name>PrivateORPublic</web-resource-name> <url-pattern>/somefolder/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint>
De ésta manera el folder /somefolder/* y todos sus descendientes pueden o no utilizar el protocolo HTTPS.
