两个URL指向同一个Tomcat实例,有一个重定向到另一个

时间:2018-05-03 13:28:01

标签: tomcat ssl redirect

我的设置是这样的(不幸的是)。

两个域指向同一台服务器:
app.foo.com
app.bar.com

两个Tomcat实例在此服务器上运行,一个在端口80上运行,另一个在端口443上运行。

问题在于端口443上的安全应用程序。我为app.foo.com安装了SSL证书,所以它工作得很好。问题是,当我转到https://app.bar.com时,我从浏览器中获得了大的“不安全”警告(如预期的那样)。 Tomcat配置文件中有没有办法让https://app.bar.com的流量重定向到https://app.foo.com

2 个答案:

答案 0 :(得分:0)

我假设您知道如何在tomcat中重定向到其他主机,例如Host-Header并发送指向另一个url的301或302响应。但我认为真正的问题是,如果可能没有显示无效的SSL警告:这是不可能的,因为对https://app.bar.com的初始请求只会到达您的服务器,如果用户手动接受无效的证书。

答案 1 :(得分:0)

在请求https://app.bar.com时,没有客户端会连接到端口80 ......他们总是会联系端口443.这意味着如果{44}正在端口443上托管,那么你就是#39} ; ll总是得到(a)foo.com的证书,(b)可能是使用HTTPS时的foo.com应用程序。

是否有特殊原因为这两个应用程序使用不同的端口?为什么没有:

设置上述URL以及以下URL的工作是微不足道的:

如果您希望foo.com总是abd只提供应用foo.comfoo始终提供应用bar.com(两者都在上下文bar又名{{ 1}}),然后您需要选择以下策略之一:

策略1:更智能的证书

获取证书上ROOT/两者为SAN的证书。

这将允许客户端无需投诉即可进行连接。客户端将主机名发送到服务器,Tomcat将根据主机名选择适当的应用程序。

策略2:更智能的配置

使用基于名称的证书选择配置基于名称的虚拟主机(您当然已经拥有)。

  1. www.foo.com中配置两个单独的虚拟主机(www.bar.com
    1. <Host>
    2. conf/server.xml
  2. 配置基于虚拟服务器的证书(至少需要Tomcat 8.5)
    1. 使用foo.com作为bar.com
    2. 的子元素
    3. 每个<SSLHostConfig><Connector>
    4. 一个