我有两个应用程序(PHP和.NET)在同一台机器上工作,但不同的服务器(一个在Apache上,一个在IIS上)。我也有PHP应用程序使用的SSL证书。我希望我的.NET应用程序使用相同的域名并使用相同的证书。
我应该如何配置服务器?
我将不胜感激。
答案 0 :(得分:3)
HTTPS仅在检查证书时验证主机名(请参阅RFC 2818 Section 3.1),而不是端口,因此对同一主机上的两个不同应用程序使用相同的证书不会有任何问题。
你可以:
https://www.example.com/
(端口443,默认)https://www.example.com:8443/
上的IIS(端口8443)如果您想为Apache Httpd和IIS使用相同的端口,那么它将成为一个问题。在HTTPS的非标准端口上运行不同的服务器不一定是个好主意:它可能会导致问题,因为某些防火墙(和某些代理服务器)不允许您在443以外的其他端口上连接到HTTPS(或至少,端口8443将不会打开。
对此的解决方案是使用Apache Httpd作为前端,并将请求的“部分”(例如,以https://www.example.com/iis/
开头的eveything)转发到后面的IIS。这可以使用反向代理完成(请参阅Apache Httpd中的mod_proxy_http
)。如果您的IIS服务器位于同一台计算机上,则重定向可以有效地转到localhost
(在您选择的IIS端口上,可能不是默认的80)。在这种情况下,Apache Httpd和IIS之间的连接不需要使用SSL / TLS进行保护,因此您不需要为IIS设置证书(如果您确实愿意,可以使用它,但它对于localhost
个连接)。来自用户的所有SSL / TLS连接都将以Apache Httpd结束,然后Apache Httpd会在内部向IIS内部发送一些请求。
将Apache Tomcat(或Java容器)放在Apache Httpd后面时,可能会有更多关于此的文档,但在用IIS替换Tomcat时,原则应该相同。
以下是有关带有Jetty的Apache Httpd的一些文档:http://wiki.eclipse.org/Jetty/Howto/Configure_mod_proxy#Configuring_Apache_mod_proxy_with_Jetty
从Apache Httpd的角度来看,使用IIS而不是Jetty应该非常相似。您可能必须调整IIS配置,使其假装其传入请求来自HTTPS(因为它们将来自纯HTTP),如果您的某些IIS应用程序配置为需要此配置。
我认为IIS也具有反向代理功能,因此如果这种方法过于棘手,您应该能够反转角色。寻找使用IIS作为您的HTTPS入口点并将Apache / PHP应用程序放在后面。
答案 1 :(得分:0)
SSL主要注册到完全合格的域名,例如www.mydomain.com
除非您有通配符SSL,否则除非您让IIS和appache服务于完全相同的域,例如www.mydomain.com,这会很奇怪,因为在向域名运行请求时会遇到冲突。
但是在IIS上安装SSL只需遵循以下指南
IIS7 http://www.globalsign.com/support/install/install_iis7.php
IIS5 + 6小时ttp://www.globalsign.com/support/install/install_iis5.php