web-dev-qa-db-fra.com

Motif d'URL / contrainte de sécurité spécifique au nom DNS / à l'en-tête de l'hôte, pour ne pas exiger de SSL avec Tomcat6

J'ai besoin d'activer SSL sur une application hébergée via Tomcat6 et j'ai ajouté les éléments suivants au fichier web.xml de Tomcat:

<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

et configurez le redirectPort en tant que 443, dans server.xml - cette installation fonctionne bien.

J'ai besoin d'autoriser l'accès à l'application, sans avoir besoin de SSL, lorsque l'accès à l'application utilise un nom DNS spécifique.

Par exemple:

le certificat SSL de l'application est associé au nom DNS

xyz.applicationdomain.com

lorsqu’on accède à l’application avec ce nom, une redirection se produit et l’URL devient

https://xyz.applicationdomain.com

mais lorsque vous accédez à l'application avec

abc.applicationdomain.com, l'application doit être accessible sans recourir à SSL.

est-il possible d'implémenter cela en utilisant une autre définition sécurité-contrainte?

2
user57555

NON, les contraintes de sécurité dans web.xml ne prennent en compte que le contexte, pas le domaine. Vous auriez besoin de gérer cela, je pense avec une solution de proxy inverse en utilisant Apache ou similaire. Deux hôtes virtuels distincts seraient redirigés vers le port sécurisé 8443 ou le port non sécurisé 8080 du conteneur Tomcat.

Chaque contexte dans server.xml définirait le porxyhost et le port appropriés pour conserver les URL consistnet.

http://wiki.customware.net/repository/display/GREENHOUSE/2009/06/13/Reverse+Proxy+with+Apache+mod_proxy

1
Eddie