我在ubuntu 12.04 LTS系统上安装并运行tomcat,利用端口443进行https请求(安装了GeoTrust证书)。
在同一台机器上,apache2响应端口80上的请求。
现在我被赋予了使用SSL保护在apache2上运行的webapps(php)的任务,但使用不同的服务器证书。
这有可能吗? - 我的假设是“不”,因为我不能让两个服务器在同一个端口上监听,但我不太确定,到目前为止还没有找到任何有用的信息。
任何帮助都将受到高度赞赏..
答案 0 :(得分: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的所有内容和代理。