无法对在Elastic Beanstalk AWS上运行ASP.NET的网站强制使用HTTPS(使用经典负载均衡器)

时间:2018-07-01 00:28:41

标签: amazon-web-services https elastic-beanstalk url-redirection

因此,我终于能够成功创建一个https网站。它只是运行模板ASP.NET Web项目。我有一个证书,该证书已添加到AWS的ELB(弹性负载均衡器-经典)中。我的环境可以正常运行,因为我可以浏览到https://www.mvc.cloudy-skies.org,并且它是安全的。棒极了!但是,仍然存在两个问题:

1-您仍然可以浏览到http://,并且可以使用。不理想。 2-我通过OWIN中间件具有Azure AD身份验证。这很好用,但是尽管登录后在重定向URL中指定了HTTPS,但我仍被重定向回该站点的HTTP版本。

有人可以在这里帮忙吗?我很茫然。这就是我在Elastic Beanstalk环境(Load Balancer)上配置侦听器的方式

enter image description here 我尝试将重定向添加到Web.Config中(例如)

<!--<rewrite>
<rules>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
  <match url="(.*)" />
  <conditions>
    <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" negate="true" />
    <add input="{REMOTE_HOST}" pattern="localhost" negate="true" />
    <add input="{REMOTE_ADDR}" pattern="127.0.0.1" negate="true" />
    <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>-->

但是,由于运行状况检查失败,这会导致Elastic Beanstalk部署更新失败。我什至尝试在解决方案的根目录中创建一个基本的HTML页面并将其用于运行状况检查,但仍然失败。关于在web.config中指定重定向的操作无法正常进行。

肯定要强制用户遵守HTTPS真的很简单吗?

1 个答案:

答案 0 :(得分:1)

我发现最好添加一个CloudFront分配,并设置“将HTTP重定向到HTTPS”。尽管公共互联网用户会自动重定向到HTTPS端点,但CloudFront会使用您的证书终止TLS会话,然后使用http与Elastic Beanstalk的ELB进行对话。

这可以通过以下步骤实现:

  1. 转到CloudFront>创建分配> Web
  2. 选择ELB来源
  3. 选择查看器策略:将HTTP重定向到HTTPS
  4. 选择基于标题的缓存:全部(这允许每个用户缓存,尽管您稍后可能会对其进行优化)
  5. 对象缓存:自定义(禁用默认缓存,稍后再进行优化)
  6. 输入最小,最大和默认TTL为0
  7. 全部使用Cookie和QueryString
  8. 选择适当的价格等级,更少的地区更便宜。
  9. 备用域名:添加要定向到此分发的所有域名
  10. 自定义SSL证书(该证书必须是us-east-1中的证书,并且上面输入的所有域名都作为备用名称。
  11. 创建分发后,您需要更新DNS CNAME以指向您提供的___.cloudfront.net地址。