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?
Вы пытаетесь перенаправить обычный 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 для обработки портов по умолчанию.