web-dev-qa-db-fra.com

À quoi sert le port de redirection dans Tomcat?

Il est difficile de donner un sens à la documentation de Tomcat et en regardant server.xml, vous trouverez une multitude de ports qui peuvent être difficiles à comprendre car ils ne sont pas vraiment expliqués correctement ou de manière approfondie dans la documentation.

Par exemple, cette ligne dans le fichier de configuration server.xml

<Connector port="8345" protocol="AJP/1.3" redirectPort="9875" />

Et ici, vous pouvez trouver un autre port de redirection:

<Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" /> 

Je comprends ce que fait le port du connecteur. Dans le premier cas, vous l'utilisez pour créer un travailleur dans Apache et l'y envoyer, dans le second, vous ouvrez un port pour accéder directement à Tomcat. Cependant, en ce qui concerne le port de redirection, les choses deviennent floues.

Voici l'explication donnée par la documentation Tomcat pour le port ajp:

Si ce connecteur prend en charge les demandes non SSL et qu'une demande est reçue pour laquelle une correspondance nécessite un transport SSL, Catalina redirigera automatiquement la demande vers le numéro de port spécifié ici.

Je choisis toujours un port de redirection aléatoire sur 1024 et cela fonctionne,

Mais quand cela entrerait-il en pratique? Comment savoir quand une demande nécessite un transport SSL?

J'ai un serveur satellite exécutant un module Tomcat. Ce module entre en vigueur en redirigeant le trafic vers le connecteur ajp avec Apache depuis le serveur principal et vice versa.

Dans le serveur principal, https est appliqué dans Apache. Cela signifie-t-il que toutes les demandes sont envoyées au serveur satellite cryptées ou en texte brut? Je sais que si j'accède au serveur satellite via le port 8080, il n'est pas chiffré, mais je me demande si cela s'applique également au trafic redirigé vers le serveur principal et où ce port de redirection entre-t-il en vigueur.

13
Ulukai

Comme il est défini dans la documentation, le port de redirection apparaîtra lorsque la demande SSL arrivera sur le serveur et comme le port du connecteur http ne peut pas gérer les demandes SSL, il sera redirigé vers le port défini. Mais leur doit être une autre section définie dans le fichier server.xml dans laquelle le port de redirection défini servira de port de connecteur pour gérer les requêtes SSL. Par exemple, si vous souhaitez que les requêtes http soient traitées par le port 80 et les requêtes https par le port 443, le fichier server.xml ressemblera à ceci:

<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" />

<Connector port="443" protocol="org.Apache.coyote.http11.Http11Protocol" SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS" keystoreFile="/path/to/kestorefile" keystorePass="my_keystore_password"/>

Keystorefile est le certificat SSL de votre site Web.

Si vous ne configurez pas l'autre section avec le port de redirection comme port de connecteur, vos demandes ne seront pas redirigées vers ce port. Par exemple, si le site Web ne prend pas en charge les demandes SSL et que vous essayez d'envoyer une demande https à ce site Web, une erreur comme Échec de la connexion sécurisée s'affichera sur le navigateur.

7
Gaurav Pundir