我正在尝试寻找为我们正在开发的 CMS Web 应用程序设置 SSL 证书的最佳方法。我们将经常添加需要通过 HTTPS/SSL 提供内容的新网站,但每个客户端的域名会有所不同。
这是一个在 IIS 6 (Win Server 2003) 上运行的 ASP.Net (3.5 SP1) 应用程序,理想情况下,我们希望从一个 IIS 站点运行它。首先是为了性能,因为我猜想让许多 IIS 站点从同一组文件运行,每个站点都维护自己的数据库连接和缓存不是一个好主意?!其次,从维护和可扩展性的角度来看,让事情变得简单。
那么,有没有办法在 IIS 中的一个网站上设置我们的应用程序,而该网站可能拥有数百个域的某种通用 SSL 证书?或者,如果这不可能或不推荐,下一个最佳选择是什么?或者,如果升级到 Win Server 2008 和 IIS7 会有所帮助,我们也可以看看。
非常感谢,蒂姆
答案1
在 IIS 6 中每个站点不可能使用多个证书,据我所知,在 IIS 7 中也是如此。
如果您的客户都可以使用同一个域的子域,您可以使用通配符证书 (*.domain.com) 来实现这一点。如果这不可能,那么 SAN 证书将允许一个证书中包含多个域,但如果您需要数百个域,那么费用会很昂贵,并且您可能会达到每个证书允许的域数量的限制。
没有什么可以阻止您在 IIS 中拥有多个站点,并且所有站点都指向相同的内容。
答案2
即使您使用多个 IIS 站点,您也需要为每个站点设置唯一的 IP 地址和证书。如果您没有为每个站点设置唯一的 IP 地址,则需要使用通配符证书或 UC 证书 (http://www.sslshopper.com/unified-communications-uc-ssl-certificates.html),然后为每个站点配置 SSL 主机头:http://www.sslshopper.com/article-how-to-configure-ssl-host-headers-in-iis-6.html
我建议尝试使用子域名,这样您可以在一个网站上使用通配符证书。
答案3
请记住,每个 IP/端口组合只能使用一个证书。当然,您可以在多个 IP 和/或端口上使用通配符 (SAN) 证书。这意味着,如果您不使用 SAN 证书,则需要为您的服务器提供多个 IP(因为使用非标准 80 端口通常是不可接受的),因为您无法分配两个不同的证书来监听同一个 IP。
希望这能澄清一下。
答案4
使用单个 IIS 站点和应用程序中的逻辑来检测要服务哪个客户端。我将安装多域 SSL 证书或通配符子域证书。GoDaddy 有多个域 SSL 证书:
www.godaddy.com/gdshop/ssl/ssl.asp?ci=9039
每年大约 1,200 美元,您就可以为 100 多个域名提供服务。我工作的地方有一个通配符子域名,并且有一个为多个子域名提供服务的应用程序。
如果我没记错的话,IIS6 在为单个站点添加多个 SSL 绑定时会遇到麻烦。您可以这样做,但必须使用命令行而不是 GUI。请参阅:
www.sslshopper.com/article-how-to-configure-ssl-host-headers-in-iis-6.html