我在Linux机器上安装了Tomcat8,并在端口443上启用了https连接器。
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
maxThreads="150"
scheme="https"
secure="true"
URIEncoding="UTF-8"
keystoreFile="${catalina.base}/conf/ssl/keystore.jks"
keystorePass="*********"
SSLVerifyClient="optional"
SSLProtocol="TLSv1">
我还启用了Tomcat AccessLogValve,以便查看所有请求。
我启动了服务器,在catalina日志中看到https连接器已被正确实例化。现在,如果我从另一个服务器发出https请求,我在tomcat日志和访问日志中看不到任何东西。
如果我在端口443上运行linux命令tcpdump,我可以看到请求正在到达机器。
如果我在安装了Tomcat的机器上使用curl,它可以很好地工作。我还可以补充说,我必须以root身份启动tomcat (暂时,我知道这是一个糟糕的做法)
有什么线索吗?
谢谢!
发布于 2020-03-10 17:31:50
该问题与安装Tomcat的机器的ip有关。这台机器有两个ips,一个用于eth0,另一个用于eth1。
我正在调用tomcat,比如https://serverName:443,但是dns重定向到了eth0中设置的ip。
如果我调用https://ipForEth01:443,它工作得很好。
虽然不确定这是一个有效的解决方案,但我的客户将决定是否修复服务器网络配置。
发布于 2020-04-18 19:17:26
在Linux和其他类UNIX系统中,我们必须是root用户(具有超级用户权限)才能侦听1024以下的TCP或UDP端口(众所周知的端口)。
出于安全原因,这是受限制的。
Tomcat或Jboss或任何应用程序服务器使用默认的http 80或SSL端口443。
有不同的解决方案
1)最常见的是使用反向代理服务器将命中80或443的请求路由到8080或8443。Nginx,apache是最常见的。如果您的组织拥有BigIP F5。你也可以使用它
2)在没有外部应用的情况下,Linux本身可以在这里获得帮助。使用端口转发。
可以使用Iptables或Firewalld。
可以按如下方式设置系统firewalld
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080:toaddr= =“public”zone
sudo firewall-cmd --zone=public --add-masquerade
然后您可以通过以下方式查看设置
sudo firewall-cmd --list --all
https://stackoverflow.com/questions/60566385
复制相似问题