如何使用 Tomcat 和 iptables 从端口 80 重定向到端口 8443

Jam*_*mes -2 linux tomcat redirect

我有以下 iptable 条目:

REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8443
Run Code Online (Sandbox Code Playgroud)

在我的 server.xml 中,我只有以下连接器:

<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" />
Run Code Online (Sandbox Code Playgroud)

当我使用来自 Firefox 的 http 说时,我看到一个对类型为 application/octet-stream 的小(7 字节)文件的 GET 请求,而不是使用 https 时我将获得的页面。我正在使用 Ubuntu 18 和 Tomcat 8。

如何配置将 http 重定向到 https?

Tho*_*ger 5

您正在尝试将普通 HTTP 端口重定向到 HTTPS。

浏览器需要纯文本,但会获得 SSL 流,这就是您可以下载的内容。

您应该使用 HTTP 重定向到 HTTPS,而不是 IPTables。

<Connector port="8080" protocol="HTTP/1.1"
       connectionTimeout="20000"
       URIEncoding="UTF-8"
       redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)

您仍然可以使用 IPTables 将 80 重定向到 8080,将 443 重定向到 8443。但更好的解决方案是在您的 tomcat 前使用反向代理来处理默认端口。