因此,我终于能够成功创建一个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)上配置侦听器的方式
<!--<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真的很简单吗?
答案 0 :(得分:1)
我发现最好添加一个CloudFront分配,并设置“将HTTP重定向到HTTPS”。尽管公共互联网用户会自动重定向到HTTPS端点,但CloudFront会使用您的证书终止TLS会话,然后使用http与Elastic Beanstalk的ELB进行对话。
这可以通过以下步骤实现: