仅限外部IP的Tomcat SSL重定向

时间:2017-08-25 18:18:21

标签: java tomcat ssl redirect

我无法正确设置tomcat重定向。我正在尝试为一个webapp设置tomcat,目前我拥有它以便所有端口8080的请求被重定向到8443上的SSL端口。这对于任何外部连接都很有效。它也适用于任何在内部连接的人,只要他们使用域名而不是本地IP。

问题是我有一些实用程序需要通过LAN连接到此Web应用程序。目前,他们都是通过与localIP:8080进行沟通来实现这一目标的。当发生tomcat重定向时,它们会被重定向到https://localIP:8443并进入无效的证书问题。

我想知道是否可以为来自外部IP的所有请求重定向到SSL,并允许LAN IP连接到非ssl端口8080.

server.xml中

<Connector port="8080" protocol="HTTP/1.1"
           address="0.0.0.0"
               connectionTimeout="20000"
               redirectPort="8443" />

的web.xml

<security-constraint>
    <web-resource-collection>
        <web-resource-name>App_nmae</web-resource-name>
        <url-pattern>/*</url-pattern>
        <http-method>GET</http-method>
        <http-method>POST</http-method>
    </web-resource-collection>

    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

1 个答案:

答案 0 :(得分:1)

一些想法:

  1. 始终为服务使用正确的主机名,并照常允许TLS。这将是IMO的最佳实践。
  2. 修复客户端,因为您可以完全控制。只要证书(否则)有效,只要让它们忽略主机名不匹配。这有点像黑客,但应该很容易实现。
  3. 设置一个额外的连接器,通过手工波浪魔法修复所有内容,并将“可信”应用程序指向http://localIP:8081

    <Connector port="8081" secure="true" />

  4. 现在,限制对该端口的访问权限非常重要。最好的方法是使用防火墙,但您可以通过在配置中添加RemoveAddressFilter来提高安全性。