我有一个包含缓存角色、辅助角色和 Web 角色的 Azure 云项目。我有一个新要求,即让 Web 角色服务有两个单独的域,每个域都有不同的 SSL 证书。它们还需要绑定到同一个端口。我没有多域证书,因为它们由不同的人拥有。
为此,我认为我需要运行 Web 角色的单独角色实例,这样我就不会与端口/证书绑定发生冲突。除了域名和 SSL 证书之外,项目是相同的。谁能告诉我一个有效的方法来完成这个?
在短期内,我愿意在不同的端口上运行,但也无法让它工作。
我有一个包含缓存角色、辅助角色和 Web 角色的 Azure 云项目。我有一个新要求,即让 Web 角色服务有两个单独的域,每个域都有不同的 SSL 证书。它们还需要绑定到同一个端口。我没有多域证书,因为它们由不同的人拥有。
为此,我认为我需要运行 Web 角色的单独角色实例,这样我就不会与端口/证书绑定发生冲突。除了域名和 SSL 证书之外,项目是相同的。谁能告诉我一个有效的方法来完成这个?
在短期内,我愿意在不同的端口上运行,但也无法让它工作。
正如您所说,单个 WebRole 只有一个外部 IP,因此我认为通过在服务定义(.csdef)文件中使用,您只能在端口 443 上为 https 端点拥有一个证书。如果您有一个具有多个 SAN 的证书,它可能可以在同一个端口上为不同的站点提供服务。
此博客文章描述了您正在寻找的内容(设置 IIS 8.0 支持的 SNI SSL 扩展): http: //www.vic.ms/microsoft/windows-azure/multiples-ssl-certificates-on-windows-azure-云服务/
MSDN 文章中描述了一个 Web 角色中的多个网站的配置选项:为多个网站配置一个 Web 角色
作为短期解决方案,您可以尝试使用其他端点:
<InputEndpoint name="HttpsIn2" protocol="https" port="444" certificate="foo.com" />
<InputEndpoint name="HttpsIn3" protocol="https" port="445" certificate="bar.com" />
并在其他站点中使用它们:
<WebRole name="Web" vmsize="Small">
<Sites>
<Site name="Web"> ... </Site>
<Site name="foo" physicalDirectory="..\..\..\Web\Content">
<Bindings>
<Binding hostHeader="www.foo.com" name="HttpsBindingA" endpointName="HttpsIn2" />
</Bindings>
</Site>
<Site name="bar" physicalDirectory="..\..\..\Web\Content">
<Bindings>
<Binding hostHeader="www.bar.com" name="HttpsBindingB" endpointName="HttpsIn3" />
</Bindings>
</Site>