tomcat 7: автоматическое перенаправление https-запросов на порт 8443

на tomcat7 наше веб-приложение работает через https через порт 8443 и отлично работает, за исключением того, что мы не можем перенаправить порт https по умолчанию (443) к 8443 поэтому, как следствие,": 8443 " должен быть включен в URL-адрес всякий раз, когда мы должны получить доступ к приложению. Я включаю некоторые части нашего сервера.XML-файл. Что нужно сделать,чтобы иметь возможность загружать наши страницы без необходимости вводить информацию о порте в 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" />

1 ответов


Я нашел простое решение на coderanch с помощью iptables:http://coderanch.com/t/601907/Tomcat/SSL-work

вот строка для ввода:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443

новый изменить

вот мой полный ответ сейчас. У нас была проблема с предыдущим ответом, так как при вызове url из http перенаправление было в порядке, но всегда добавляло": 8443 " в конце, что было не очень приятно.

Итак, с точки зрения iptable, вот что мы написал:

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

Теперь также важно добавить перенаправления в файл Tomcat conf сервер.в XML:

<Connector port="8080"
           enableLookups="false"
           redirectPort="443" />

<Connector port="443" protocol="HTTP/1.1"
           enableLookups="false"
           redirectPort="8443" />

вот и все, перезагрузите tomcat, и все должно работать. Я не эксперт в конфигурациях iptable, поэтому, пожалуйста, проверьте с помощью sysadmins перед изменением любой существующей конфигурации в производстве.