Pergunta

Eu tenho um pequeno problema com o uso de SSL em um Tomcat que está atrás de Apache. Eu tenho usado Google durante toda a manhã para tentar encontrar uma solução boa, mas nada até agora.

Como uma parte da minha configuração SSL VirtualHost Tenho

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

Esta muito bem para a maioria dos casos, mas j_security_check funciona, após um login bem-sucedido de https://mysite.com/MyApp , redireciona para uma página HTTP http://mysite.com/MyApp/secret.html em vez de deixá-lo como uma página HTTPS https://mysite.com/MyApp/secret.html . Não é apenas o início de sessão que é confidencial, mas os dados que estão sendo transmitidos, então eu preciso para mantê-lo HTTPS. Quando eu adicionar à segurança-contraints do aplicativo

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

https://mysite.com:8443/MyApp/secret.html . Eu percebo que ele redireciona para 8443 porque server.xml tem SSL configurado para 8443, mas já que esta é proxy através do Apache, ele deve de fato ser 443.

Eu percebo que não têm ProxyPassReverse, mas isso não é algo que eu possa adicionar dentro de uma seção do arquivo de configuração do Apache

Como posso forçar j_security_check a qualquer redirecionamento relativa (por isso não mudar https para http) ou redirecionar para 443 em vez de 8443? Isto é algo que deve fazer cumprir via mod_proxy do Tomcat ou Apache?

Felicidades

Nik

Foi útil?

Solução

Você não pode realmente contar com Tomcat para fazer o redirecionamento para SSL para sua configuração. Você precisa escrever um filtro para fazer o redirecionamento si mesmo.

Para a sua configuração específica, que poderia funcionar se você adicionar redirectPort assim,

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

Por favor, remova o conector HTTPS. Ele pode confundir alguma versão do Tomcat quando você tem tanto redirectPort e HTTPS conector. Parece que você não quer que as pessoas acessem o seu porta HTTPS de qualquer maneira.

Isso só funciona quando você tem o Apache e Tomcat na mesma máquina. Em um ambiente de produção, que pode não ser o caso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top