0

我在 ubuntu 12.04 LTS 系统上安装并运行了 tomcat,使用端口 443 进行 https 请求(安装了 GeoTrust 证书)。

在同一台机器上,apache2 响应端口 80 上的请求。

现在,我的任务是保护在 apache2 上运行的 webapps (php) 也使用 SSL,但使用不同的服务器证书。

这可能吗?- 我的假设是“不”,因为我不能让两台服务器在同一个端口上监听,但我不太确定,到目前为止还没有找到任何有用的信息。

任何帮助将不胜感激..

4

1 回答 1

0

如今,您仍然难以在单个接口/端口组合(例如 0.0.0.0:443)上提供多个证书。如果您想为 HTTPS 使用两个单独的端口,那没问题。如果您想绑定到不同的接口(例如 1.2.3.4:443 和 4.3.2.1:443),那没问题。如果您希望它们都在同一个接口/端口上,您将不得不依赖服务器名称指示,您的 Web 服务器版本和/或客户端可能支持也可能不支持。

如果你想要不同的证书,你可能也想要不同的主机名,所以也许你可以在机器上配置第二个接口。请注意,您不需要在机器上安装多个 NIC 来启用不同的接口:您的操作系统应该能够创建具有不同 IP 地址的另一个接口并且仍然共享 NIC。然后,您只需将 DNS 设置为将每个主机名指向不同的 IP 地址,并确保将每个 SSL VirtualHost 绑定到正确的 IP 地址(而不是使用0.0.0.0*作为主机名)。

老实说,SNI 是最容易做的事情:只需按照您“期望”它工作的方式使用启用 SSL(具有不同证书)的 VirtualHosts,然后查看服务器是否在没有投诉的情况下启动。如果是这样,您需要测试您的客户,看看它是否适合您的受众。对于 SNI 场景,我假设 Apache httpd 将处理所有 SSL 流量,并且您将使用类似mod_proxy_*mod_jk代理到 Tomcat 的东西。

对于拆分 IP 场景,您可以做任何您想做的事情:在 Tomcat 中终止 SSL 或对所有内容使用 httpd 并将动态内容代理到 Tomcat。

于 2013-10-04T19:08:11.443 回答