这样我终于能够成功创建一个https网站了。它只是运行模板 ASP.NET Web 项目。我有一个证书,并且该证书已添加到 AWS 中的 ELB(弹性负载均衡器 - 经典)中。我的环境可以浏览到https://www.mvc.cloudy-skies.org https://www.mvc.cloudy-skies.org而且它是安全的。棒极了!然而,仍然存在两个问题:
1 - 您仍然可以浏览到 http:// 并且它可以工作。不理想。
2 - 我通过 OWIN 中间件进行 Azure AD 身份验证。这效果很好,但尽管在登录后在重定向 URL 中指定了 HTTPS,我还是会被重定向回该网站的 HTTP 版本。
有人可以帮忙吗?我不知所措。这就是我在 Elastic Beanstalk 环境(负载均衡器)上配置侦听器的方式
I have tried adding redirects into the Web.Config (e.g.)
<!--<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 真的很简单吗?
我发现最好添加一个 CloudFront 发行版,并设置“将 HTTP 重定向到 HTTPS”。 CloudFront 终止与您的证书的 TLS 会话,然后使用 http 与 Elastic Beanstalk 的 ELB 进行通信,但公共 Internet 用户会自动重定向到 HTTPS 终端节点。
这可以通过以下步骤来实现:
- 转到 CloudFront > 创建分配 > Web
- 选择ELB原点
- 选择查看器策略:将 HTTP 重定向到 HTTPS
- 选择基于标头的缓存:全部(这允许对每个用户进行缓存,尽管您可能希望稍后对其进行优化)
- 对象缓存:自定义(禁用默认缓存,稍后查看以优化)
- 输入最小、最大和默认 TTL 为 0
- Cookie 和 QueryString 全部
- 选择合适的价格档次,地区越少价格越便宜。
- 备用域名:添加您想要定向到此分发的所有域名
- 自定义 SSL 证书(这需要是 us-east-1 中的证书,其中包含上面输入的所有域名作为备用名称。
- 创建分配后,您需要更新 DNS CNAME 以指向为您提供的 ___.cloudfront.net 地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)