我在 Ubuntu 18.04.4 LTS(虚拟)机器上运行着 Tomcat 9.0.36。我正在尝试将其配置为使用从 CA 获得的证书。我使用 keytool 成功生成了密钥库文件,并尝试将 Tomcat 配置为在端口 8443 上侦听 https 流量。
server.xms中相关字段:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="HTTP/1.1" maxThreads="100"
scheme="https" secure="true"
SSLEnabled="true"
clientAuth="false"
sslProtocol="TLS"
keyAlias="correctAlias"
keystoreFile="/usr/lib/jvm/jdk-12.0.2/lib/security/keystorefile.jks"
keystorePass="correctPassWord" />
我尝试了两个端口的多种配置(带或不带 redirectPort=...、注释掉另一个端口等),最终结果相同。在端口 8080 上,一切正常(启用连接器时),但在 8443 上,结果是:
This site can’t be reached {my ip} took too long to respond.
netstat -plnt 给出以下内容:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 22748/java
tcp 0 0 0.0.0.0:8443 0.0.0.0:* LISTEN 22748/java
...
因此,我假设有某些东西阻止服务器响应,因为 catalina.out 没有给出任何错误,只有启动信息,http-nio-8080 和 http-jsse-nio-8443 已经启动,并且一切似乎都在运行。
我希望最终的结果是所有内容都重定向到 https 协议,并且没有任何内容未加密。
答案1
确保您的 IP 地址允许或打开端口 (8443)。
这样,外界就可以实现这种连接。
答案2
看来我们的网络中发生了一些有趣的事情,所以我最终使用以下方法将端口 443 路由到 8443:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
这似乎有效。最终,无论如何,这都是我想要的,所以我设法同时解决了两个问题。