How to redirect from port 80 to port 8443 using Tomcat and iptables

I have the following iptable entry:

REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8443

In my server.xml, I have only the following connector:

<Connector port="8443" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" disableUploadTimeout="true"
                   acceptCount="100" scheme="https" secure="true"
                   clientAuth="false" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" SSLEnabled="true"
                   URIEncoding="UTF-8" keyAlias="tomcat" keystorePass="pass" keystoreFile="/home/myhome/.keystore" />

When I use http say from Firefox, I see a GET request for a small (7 bytes) file with type application/octet-stream instead of the page that I would get if using https. I'm using Ubuntu 18 and Tomcat 8.

How can I configure to redirect http to https?

-2
задан 24 July 2018 в 17:49
1 ответ

Вы пытаетесь перенаправить обычный HTTP-порт на HTTPS.

Браузер ожидает открытый текст, но получает SSL-поток, это то, что вам предлагается для загрузки.

Вам следует используйте HTTP для перенаправления на HTTPS, а не на IPTables.

<Connector port="8080" protocol="HTTP/1.1"
       connectionTimeout="20000"
       URIEncoding="UTF-8"
       redirectPort="8443" />

Вы по-прежнему можете использовать IPTables для перенаправления с 80 на 8080 и с 443 на 8443. Но лучшим решением было бы использовать обратный прокси перед вашим tomcat для обработки портов по умолчанию.

4
ответ дан 5 December 2019 в 21:08

Теги

Похожие вопросы