2009-09-22 7 views
1

J'ai un petit problème avec l'utilisation de SSL sur un Tomcat qui est derrière Apache. J'ai utilisé Google toute la matinée pour essayer de trouver une bonne solution, mais rien pour l'instant.Tomcat derrière Apache: Utiliser SSL avec j_security_check

En tant que partie de ma configuration SSL VirtualHost Je

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

Cela fonctionne très bien pour la plupart des cas, mais j_security_check, après une connexion réussie de https://mysite.com/MyApp, redirige vers une page HTTP http://mysite.com/MyApp/secret.html au lieu de le laisser comme HTTPS page https://mysite.com/MyApp/secret.html. Ce n'est pas seulement la connexion qui est confidentielle, mais les données qui sont transmises, donc je dois garder le HTTPS. Lorsque j'ajoute aux contraintes de sécurité de l'application

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

il redirige vers https://mysite.com:8443/MyApp/secret.html. Je me rends compte qu'il redirige vers 8443 parce que server.xml a SSL configuré à 8443, mais puisque ceci est mandaté par Apache, il devrait en fait être 443.

Je réalise que je n'ai pas de ProxyPassReverse, mais ce n'est pas quelque chose que je peux ajouter dans une section du fichier de configuration Apache

Comment puis-je forcer j_security_check soit à rediriger relatif (ne pas changer https à http) ou à rediriger vers 443 au lieu de 8443? Est-ce quelque chose que je devrais appliquer via Tomcat ou mod_proxy d'Apache?

Vive

Nik

Répondre

1

Vous ne pouvez pas vraiment compter sur Tomcat pour faire la redirection à SSL pour votre configuration. Vous devez écrire un filtre pour faire la redirection vous-même.

Pour votre configuration spécifique, il pourrait fonctionner si vous ajoutez redirectPort comme ça,

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

S'il vous plaît retirer le connecteur HTTPS. Il pourrait confondre une version de Tomcat lorsque vous avez à la fois le connecteur redirectPort et le connecteur HTTPS. On dirait que vous ne voulez pas que les gens accèdent à votre port HTTPS de toute façon.

Cela ne fonctionne que si vous avez Apache et Tomcat sur la même machine. Dans un environnement de production, cela peut ne pas être le cas.

+0

Merci, je vais regarder dans les filtres :-) – niklassaers

Questions connexes