Pregunta

Tengo un pequeño problema con el uso de SSL en un Tomcat que está detrás de Apache. He utilizado Google toda la mañana para tratar de encontrar una buena solución, pero nada hasta ahora.

Como parte de la configuración de mi host virtual SSL tengo

<Location /MyApp/>
  ProxyPass http://localhost:8080/MyApp/
</Location>

Esto funciona bien para la mayoría de los casos, pero j_security_check, después de una conexión exitosa de la https://mysite.com/MyApp , redirige a una página HTTP http://mysite.com/MyApp/secret.html en lugar de dejarlo como una página HTTPS https://mysite.com/MyApp/secret.html . No es sólo el inicio de sesión que es confidencial, pero los datos que se están transmitiendo, por lo que necesita para mantenerlo HTTPS. Cuando agrego a seguridad-contraints de la aplicación

<user-data-constraint>
  <transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>

https://mysite.com:8443/MyApp/secret.html . Soy consciente de que redirige a 8443 debido a server.xml ha configurado para SSL 8443, pero ya que este es aproximado a través de Apache, que debería ser en realidad 443.

Me doy cuenta de que no tengo ProxyPassReverse, pero eso no es algo que pueda añadir dentro de una sección del archivo de configuración de Apache

¿Cómo puedo forzar j_security_check a cualquiera de redirección relativa (por lo que no cambia https a http) o para redirigir a 443 en lugar de 8443? ¿Es esto algo que debe cumplir a través de Tomcat o Apache mod_proxy?

Saludos

Nik

¿Fue útil?

Solución

Realmente no se puede contar con Tomcat para hacer la redirección a SSL para su configuración. Usted tiene que escribir un filtro para hacer el mismo redirección.

Para su configuración específica, que podría funcionar si se agrega redirectPort como este,

<Connector ... port="8080" redirectPort="443"/>

Por favor, retire el conector HTTPS. Se podría confundir a alguna versión de Tomcat cuando se tiene tanto redirectPort y el conector HTTPS. Parece que usted no quiere que las personas tengan acceso a su puerto HTTPS de todos modos.

Esto sólo funciona cuando tienes Apache y Tomcat en la misma máquina. En un entorno de producción, que no puede ser el caso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top