多个Azure WebRoles使用SSL - 如何设置解决方案?

时间:2013-08-27 16:13:02

标签: azure azure-web-roles

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

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。

2 个答案:

答案 0 :(得分:2)

如果要对同一服务上的两个站点使用相同的端口,则只需要一个角色并将其设置为两个站点并为第二个站点设置主机头(在您的情况下我建议您使用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>

答案 1 :(得分:0)

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

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