Domanda

Ho un piccolo problema con l'utilizzo di SSL su un Tomcat che si trova dietro Apache. Ho usato Google per tutta la mattina per cercare di trovare una buona soluzione, ma nulla finora.

Come parte della mia configurazione SSL VirtualHost ho

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

Questo funziona bene per la maggior parte dei casi, ma j_security_check, dopo un login riuscito da https://mysite.com/MyApp , reindirizza a una pagina HTTP http://mysite.com/MyApp/secret.html invece di lasciarlo come una pagina HTTPS https://mysite.com/MyApp/secret.html . Non è solo l'inizio attività che è riservata, ma i dati che viene trasmesso, quindi ho bisogno di tenerlo HTTPS. Quando aggiungo alla security-vincoli dell'applicazione

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

si reindirizza a https://mysite.com:8443/MyApp/secret.html . Mi rendo conto che reindirizza a 8443 perché server.xml è configurato per SSL 8443, ma dal momento che questo viene inoltrato attraverso Apache, dovrebbe in realtà essere 443.

mi accorgo di avere alcuna ProxyPassReverse, ma non è qualcosa che posso aggiungere all'interno di una sezione del file di configurazione di Apache

Come posso forzare j_security_check a uno redirect relativa (in modo da non cambiare https a http) o per reindirizzare a 443 invece di 8443? È questo qualcosa che dovrei far rispettare tramite Tomcat o Apache mod_proxy?

Saluti

Nik

È stato utile?

Soluzione

Non si può davvero contare su Tomcat per fare il reindirizzamento alla SSL per la configurazione. Hai bisogno di scrivere un filtro per fare il te redirect.

Per la vostra configurazione specifica, potrebbe funzionare se si aggiunge redirectPort come questo,

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

Si prega di rimuovere il connettore HTTPS. Si potrebbe confondere una qualche versione di Tomcat quando si dispone di entrambi redirectPort e connettore HTTPS. Suona come non si vuole che la gente di accedere al tuo porta HTTPS in ogni caso.

Questo funziona solo quando si dispone di Apache e Tomcat sulla stessa macchina. In un ambiente di produzione, che non può essere il caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top