【问题标题】:Multiple Azure WebRoles Using SSL - How do I setup the solution?使用 SSL 的多个 Azure WebRoles - 如何设置解决方案?
【发布时间】:2013-08-28 05:12:59
【问题描述】:

我有一个最终看起来像这样的解决方案:

http://www.test.com - 公共营销网站(80 端口)

https://www.test.com - 用于经过身份验证的用户的 MVC Web 应用程序(端口 443)

https://api.test.com - 所有客户端都将使用的 WebAPI 层(希望是 443 端口)

最初该应用程序将是一个 MVC 网站,但我们也计划为 Windows Phone、Windows 8 等开发本机客户端。所有客户端,包括 MVC 应用程序网站,都将使用 WebAPI 服务层进行数据操作。所有客户端也将利用可移植类库。

我注册了两个 SSL 证书。一个用于 www.test.com,一个用于 api.test.com。

当我配置角色(WebRole.Public、WebRole.Application 和 WebRole.WebAPI)时,我被告知端口 443 已分配给另一个 WebRole(在本例中为应用程序 WebRole),我需要使用下一个可用端口这是8443。

我担心的是,如果我使用端口 8443,它对防火墙不友好,这意味着未来的客户端(Windows Phone、Win8 等)在不打开防火墙的情况下将无法工作。我真的很想在应用程序和 webapi WebRoles 上都使用 443。

如果我设置多个 Azure 项目以允许在 WebRole.WebAPI 和 WebRole.Application 上使用端口 443,是否可以在本地调试?

推荐的解决方案配置是什么?我们正在使用 Visual Studio 2013。

【问题讨论】:

    标签: azure azure-web-roles


    【解决方案1】:

    如果您想为同一服务上的两个站点使用相同的端口,您只需要一个角色并使用两个站点设置它并为第二个站点设置一个主机头(在您的情况下,我建议api.test.com)。有完整的documentation on MSDN。所以你的服务定义应该是这样的:

    <WebRole name="Test" vmsize="Small">
        <Sites>
          <Site name="Web">
            <Bindings>
              <Binding name="Endpoint1" endpointName="HttpInput" />
              <Binding name="Endpoint1" endpointName="HttpsInput" />
            </Bindings>
          </Site>
          <Site name="Api" physicalDirectory="[Relative Path to Published API">
            <Bindings>
              <Binding name="ApiEndpoint" endpointName="HttpsInput" hostHeader="api.test.com" />
            </Bindings>
          </Site>
        </Sites>
        <Endpoints>
          <InputEndpoint name="HttpInput" protocol="http" port="80" />
          <InputEndpoint name="HttpsInput" protocol="https" port="443" certificate="SSL" />
        </Endpoints>
    

    【讨论】:

    • 这是否允许适当的缩放?我想使用单独的网络角色,这样我就可以独立扩展它们。我们刚刚开始设计,因此我们可以使用不同类型的 SSL 证书或更改域(例如 www.test.com/api)。我们希望遵循推荐的最佳实践。我会查看您提供的链接。
    • 如果您想单独缩放它们,解决方案要简单得多。您只需要在两个不同的服务(VS 中的云项目)中拥有两个 Web 角色。这是因为服务的 HTTP 端口一次只能绑定到一个角色。这确实意味着您不能仅使用一次发布来部署整个项目,而必须使用两次。当然,您现在可以将 API 作为子站点运行,然后在需要扩展时将其拆分为自己的角色。同时,这将为您节省资金。
    • 我似乎能够在没有调试的情况下启动一个云项目时进行调试,所以这可能对我们有用。就我们的 SSL 证书而言,您是否建议使用通配符证书并将其用于 www 和 api 站点?目前我有两个单独的证书(一个用于 www,一个用于 api)。
    • 这本身就是一个问题,会引起争论。我的网络经理会说单独的证书,因为客户识别通配符证书可能会有困难。
    【解决方案2】:

    您可以获得通配符 SSL 证书,它适用于子域。您正在尝试为同一个端口注册两个证书。这不是一个好的配置。

    如果您不想购买通配符证书,您可以在 MVC 应用程序中调用您的 webapi 服务并将其托管在不同的域中。要在本地调试应用程序,您可以使用 developer express 证书(您自己批准)并定义要连接的端口。

    【讨论】:

    • 我实际上有两个不同的证书,一个用于 www.test.com,一个用于 api.test.com。我可以很好地加载这两个证书并将它们应用于不同的 WebRoles。问题是在指定端口 443 时。我不能为多个 WebRole 指定 443。你是说如果我使用通配符 SSL 证书,我将能够将两个 WebRoles 配置为在一个解决方案中使用端口 443????
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    相关资源
    最近更新 更多