我的设置是这样的(不幸的是)。
两个域指向同一台服务器:
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?
答案 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.com
而foo
始终提供应用bar.com
(两者都在上下文bar
又名{{ 1}}),然后您需要选择以下策略之一:
策略1:更智能的证书
获取证书上ROOT
和/
两者为SAN的证书。
这将允许客户端无需投诉即可进行连接。客户端将主机名发送到服务器,Tomcat将根据主机名选择适当的应用程序。
策略2:更智能的配置
使用基于名称的证书选择配置基于名称的虚拟主机(您当然已经拥有)。
www.foo.com
中配置两个单独的虚拟主机(www.bar.com
)
<Host>
conf/server.xml
foo.com
作为bar.com
<SSLHostConfig>
和<Connector>