Azure - 在暂存部署中处理SSL

时间:2011-04-28 20:05:20

标签: deployment ssl https azure

我有一个托管在Windows Azure中的Web应用程序。我们希望将SSL用于生产部署,并且我们为域提供了自定义域名和SSL证书,所有这些都在生产中正确设置并正常工作。

Web角色目前同时具有HTTP和HTTPS端点,但我们希望禁用HTTP端点并在生产中使用HTTPS。

如果我们删除HTTP端点,我的问题是:在Azure中处理Staging部署的HTTPS端点的最佳方法是什么?每次在Azure中执行新的分段部署时,它都会为您提供服务的新临时域名。在暂存中,我们是否应该根本不使用SSL证书,只是跳过所有浏览器警告,或者当域名随每个部署发生变化时,是否有办法在登台时使用SSL?或者当我们交换到生产时,是否有办法在Azure部署中“关闭”(HTTP)端点?

我最初的想法是创建两个具有不同端点的软件包,但是如果它们具有不同的端点配置,我不相信Azure会让您热插拔prod和staging部署。

3 个答案:

答案 0 :(得分:9)

对于我们的一个项目,我们使用的是URL rewrite module,默认安装在Azure上。它很棒。 web.config中的一个部分使所有HTTP流量自动重定向到HTTPS:

<rule name="HTTP to HTTPS redirect" stopProcessing="true">
  <match url="(.*)" />
    <conditions>
      <add input="{HTTPS}" pattern="off" ignoreCase="true" />
    </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule>

对于暂存环境,最好使用与生产相同的证书。这允许在生产和登台之间轻松进行热交换,您可以在浏览器中验证证书是否正确。缺点是您必须在测试分段部署时单击“继续访问网站”。

请注意,虽然URL重写模块始终在Azure中可用,但对于DevFabric,您必须下载并在开发框中安装它。下载可在http://www.iis.com上获得。

答案 1 :(得分:1)

对于这种情况,我们所做的是在Azure中创建两个不同的服务部署,两者都有他们的Production \ Staging环境。因此,我们在两个服务中都使用了生产实例,这使得网址保持静态 服务部署之间没有热交换,但是当从一个服务部署升级构建时,它将安装在第二个服务上,暂存部署,然后完成热交换。希望我清楚自己。

答案 2 :(得分:1)

我们在生产和暂存部署时保持端口80和443处于打开状态,但我们使用custom HttpModule根据Azure配置设置将HTTP流量重定向到HTTPS。如果配置值等于“生产”,则通过HTTPS强制所有流量。否则,将处理HTTP和HTTPS流量。这对我们来说非常重要,因为我们不希望我们的用户在HTTP请求被拒绝时感到困惑只是因为他们忘记使用https://为URL添加前缀。是否有特殊原因需要禁用HTTP端点?