A cosa serve la porta di reindirizzamento in Tomcat?


13

È difficile dare un senso alla documentazione di Tomcat e guardando server.xml troverai un'insalata di porte che potrebbe essere difficile da capire perché non è realmente spiegata correttamente o ampiamente nella documentazione.

Ad esempio, questa riga nel file di configurazione server.xml

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

E qui puoi trovare un'altra porta di reindirizzamento:

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

Capisco cosa fa la porta del connettore. Nel primo caso lo usi per creare un lavoratore in apache e inviarlo lì, nel secondo apri una porta per accedere direttamente a Tomcat. Tuttavia, quando si tratta di reindirizzamento, le cose diventano confuse.

Ecco la spiegazione fornita dalla documentazione di Tomcat per la porta Ajp:

Se questo connettore supporta richieste non SSL e viene ricevuta una richiesta per la quale una corrispondenza richiede il trasporto SSL, Catalina reindirizzerà automaticamente la richiesta al numero di porta specificato qui.

Scelgo sempre una porta di reindirizzamento casuale oltre 1024 e funziona,

Ma quando entrerebbe in pratica? Come fa a sapere quando una richiesta richiede il trasporto SSL?

Ho un server satellite che esegue un modulo Tomcat. Questo modulo entra in vigore reindirizzando il traffico al connettore ajp con apache dal server principale e viceversa.

Nel server principale https viene applicato in apache. Questo significa che tutte le richieste vengono inviate al server satellite crittografate o in testo normale? So che se accedo al server satellite tramite la porta 8080 non è crittografato, ma mi chiedo se ciò si applica anche al traffico che viene reindirizzato al server principale e da dove entra in vigore questa porta di reindirizzamento.

Risposte:


5

Come definito nella documentazione, la porta di reindirizzamento verrà visualizzata quando la richiesta SSL arriverà al server e poiché la porta del connettore http non è in grado di gestire le richieste SSL, verrà reindirizzata alla porta definita. Ma la loro deve essere un'altra sezione definita nel file server.xml in cui la porta di reindirizzamento definita fungerà da porta del connettore per gestire le richieste SSL. Ad esempio, se si desidera che le richieste http vengano gestite dalla porta 80 e la richiesta https dalla porta 443, il server.xml sarà simile al seguente:

<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 è il certificato ssl del tuo sito web.

Se non si configura l'altra sezione con la porta di reindirizzamento come porta del connettore, le richieste non verranno reindirizzate a quella porta. Ad esempio, se il sito Web non supporta richieste SSL e si tenta di inviare una richiesta HTTPS a tale sito Web, nel browser verrà visualizzato un errore come Connessione protetta non riuscita .


Giusto. Che dire della configurazione di ajp rispetto a http? Inoltre, è una buona idea usare le porte con meno di 1024 come hai detto? Ciò significherebbe eseguire Tomcat come root e non va bene.
Ulukai,

1
Non ho molta idea di ajp, ma il reindirizzamento deve funzionare come http. Informazioni sull'utilizzo di porte con meno di 1024, dipende totalmente da te. 80 e 443 sono porte predefinite per il protocollo https e https, non è necessario menzionarle esplicitamente nell'URL. Se vuoi usare porte non standard dipende da te. Eseguendo anche tomcat con root, dipende dall'applicazione distribuita. Se non ti fidi della tua applicazione con una prospettiva di sicurezza, non devi eseguire tomcat con root. In alternativa, puoi utilizzare apache o nginx come proxy per eseguire sulla porta 80 e 443 e reindirizzare la tua richiesta a Tomcat.
Gaurav Pundir,

Noterò che iptablesfunziona bene anche per reindirizzare il traffico a Tomcat, tra gli altri approcci .
SeldomNeedy,

Questa spiegazione è incompleta. Se si sta reindirizzando da una porta non SSL a una porta SSL, non è sufficiente includere il connettore di destinazione in server.xml. È inoltre necessario configurare la sezione <security-constraint> in web.xml. Vedere stackoverflow.com/questions/9526425/...
luiscolorado
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.