我们可以通过SSL在单个ASP.NET应用程序实例上托管多个租户吗?
时间:2020-03-06 14:34:10 来源:igfitidea点击:
我有一个ASP.NET应用程序,它将托管多个租户("软件即服务"样式)。每个租户将拥有自己的域名(www.mydomain.com,www.yourdomain.com)和自己的SSL证书。
有没有一种方法可以托管应用程序,以使所有租户都位于同一应用程序实例上?
- 我知道我们可以有多个IIS网站指向相同的共享位置,但这是行不通的-它不是同一实例。那是同一应用程序的不同实例。
- 我也知道我们可以将SSL主机标头映射与通配符证书一起使用,但这不会起作用,因为所有租户都必须是同一主域的子域-yourdomain.commondomain.com,mydomain.commondomain.com。为了使该解决方案有效,每个人都需要拥有自己的域名,而不是子域。 (理想情况下,每个租户也可以选择使用EV证书,并且我们不能拥有通配EV证书。)
解决方案
我们只限于IIS,还是可以选择放置软/硬代理或者内容切换硬件?
认为我们可以在代理服务器或者内容交换机处终止SSL,然后将请求转换为我们自己的内部url。
例如foo.com/x和bar.com/y分别在请求标头中传递原始主机名的情况下分别转换为myapp / x和myapp / y。
问题在于,传统的SSL需要在Web浏览器指示要使用的主机之前先出示证书。因此,每个IP /端口组合只能配置一个证书。
TLS的扩展名为"服务器名称指示",该扩展使浏览器可以指示要与之通信的逻辑服务器。从IIS 8.0(Windows Server 2012)开始支持此功能。
通配符起作用是因为证书本身表明该证书对该域下的所有服务器均有效。