【问题标题】:Mixed content issue in using Application Load Balancer (ALB) in AWS在 AWS 中使用 Application Load Balancer (ALB) 的混合内容问题
【发布时间】:2019-06-08 21:13:45
【问题描述】:

我有一个托管在 IIS 上的 ASP.Net Web 应用程序。 Web 应用程序(一个 Umbraco 站点)配置为在 IIS 中具有 HTTP 绑定,并且 SSL 证书绑定到 AWS 中的应用程序负载均衡器 (ALB),该应用程序负载均衡器用于通过 HTTPS 管理用户请求。这意味着当用户请求资源时,ALB 会将任何 HTTP 流量重定向到 HTTPS,然后通过端口 80(VPC 内的内部流量)将请求转发到 IIS。

对于大多数资源来说,这绝对没问题,但有少数资源(字体和图像)似乎是通过 HTTP 请求的,这会导致浏览器中出现混合内容警告。我已经尝试过 HTTP -> IIS 中的 HTTPS 重写规则和出站规则来重写响应,但这似乎无法解决问题。

谁能帮忙?

【问题讨论】:

  • 这些资源的 URL 是否在您的 Web 服务器域之外?如果是,您将需要编辑这些 url 以使用 https。还要检查你的域中的 url 是否没有在前面用 http:// 硬编码。
  • 不,它们都是应用程序的相对 url
  • 如果它们与您的应用程序相关并且您的应用程序在 IIS 的 80 端口上运行,那么它们将使用 http 作为协议。请记住 IIS 认为它通过 HTTP 提供内容,除非您正在处理 X-Forwarded-Proto 标头。使用 Chrome 或 Edge 中的调试器验证这一点。查看作为页面一部分下载的每个对象(查看完整的 url 而不仅仅是文件部分)。

标签: asp.net amazon-web-services ssl iis mixed-content


【解决方案1】:

问题的解决方案是在本地以 HTTPS 而不是 HTTP 运行 Web 应用程序,并更新负载平衡器以将请求转发到端口 443 而不是端口 80 上的 Web 服务器。

这样做

  • 在 IIS 上创建开发 SSL 证书。我没有创建自签名证书,而是使用此项目 (https://github.com/FiloSottile/mkcert) 来确保证书得到信任
  • 在 AWS 中更新 ALB 侦听器用于将请求转发到端口 443 而不是端口 80 上的 IIS 服务器的目标组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-25
    • 2017-06-12
    • 2017-11-23
    • 2017-07-30
    • 2020-08-03
    • 2021-01-21
    • 1970-01-01
    • 2020-01-17
    相关资源
    最近更新 更多