Sur Tomcat7, notre application Web s'exécute via https sur le port 8443
et fonctionne très bien sauf que nous ne pouvons pas rediriger le port par défaut https (443
) à 8443
Par conséquent, le ': 8443' doit être inclus dans l'URL chaque fois que nous devons accéder à l'application. J'inclus certaines parties de notre fichier server.xml. Que faut-il faire pour pouvoir charger nos pages sans avoir à saisir les informations de port dans l'URL?
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
enableLookups="false"
redirectPort="8443" />
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
enableLookups="false"
redirectPort="8443" />
<Connector port="443" protocol="HTTP/1.1"
connectionTimeout="20000"
URIEncoding="UTF-8"
enableLookups="false"
redirectPort="8443" />
...
<Connector port="8443"
maxHttpHeaderSize="65536"
scheme="https"
secure="true"
SSLEnabled="true"
clientAuth="false"
enableLookups="true"
acceptCount="100"
disableUploadTimeout="true"
maxThreads="200"
sslProtocol="TLS"
keystoreFile="/toto/has/a/certificate.jks"
keystorePass="totohasapassword"
protocol="org.Apache.coyote.http11.Http11NioProtocol" />
J'ai trouvé une solution simple sur coderanch en utilisant iptables: http://coderanch.com/t/601907/Tomcat/SSL-work
Voici la ligne à saisir:
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443
Voici ma réponse complète maintenant. Nous avons eu un problème avec la réponse précédente car lorsque nous appelions l'URL depuis http, la redirection était correcte mais ajoutait toujours ": 8443" à la fin, ce qui n'était pas très agréable.
Donc en termes d'iptable, voici ce que nous avons écrit:
Sudo iptables -t nat -I PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 8080
Sudo iptables -t nat -A OUTPUT -p tcp -d <your_ip_address>,<your_ip_address> --dport 80 -j REDIRECT --to-port 8080
Sudo iptables -t nat -I PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 8443
Maintenant, il est également important d'ajouter des redirections dans le fichier de configuration Tomcat server.xml :
<Connector port="8080"
enableLookups="false"
redirectPort="443" />
<Connector port="443" protocol="HTTP/1.1"
enableLookups="false"
redirectPort="8443" />
Voilà, redémarrez Tomcat et tout devrait fonctionner. Je ne suis pas un expert des configurations iptables, veuillez donc valider avec les administrateurs système avant de modifier toute configuration existante en production.