【问题标题】:HTTPS on ELB to HTTP IIS backend server reporting not secure messageELB 上的 HTTPS 到 HTTP IIS 后端服务器报告不安全消息
【发布时间】:2017-09-12 00:13:22
【问题描述】:

我不确定这是否是我的问题的正确措辞,但在我们的环境中,标准是使用接受 HTTPS 流量并在 ELB 级别执行 SSL 终止的 AWS ELB。从那里,ELB 和 Web 服务器之间的所有流量都使用常规 HTTP 完成。这种配置似乎适用于我们在 apace 或 nginx 上运行的 Web 服务器,但我需要为我们的一个 IIS 服务器使用相同的格式,这似乎给我带来了一些问题。

我可以点击 ELB 并访问该网站,但它在 URL 栏中显示“不安全”消息。关于设置的一些背景信息如下:

  • 使用 HTTPS(443) 到实例协议/端口 HTTP(80) 的侦听器创建的 ELB
  • ELB 上安装通配符 SSL 证书
  • 在 IIS 服务器上安装了相同的 SSL 证书(证书的友好名称设置为通配符证书的 CN)
  • 在 IIS 网站上设置了 http(80) 绑定

我发现了多篇关于 URL 重写模块将 HTTP 重定向到 HTTPS 的帖子,尽管我不确定这是我想要做的。我们的 ELB 和 IIS 服务器位于安全的 VPC 中,因此 HTTPS(在 ELB 上)到 HTTP(IIS 网络服务器)很好。我想如果我使用 URL 重写方法与将 SSL 卸载到网络服务器相同?

【问题讨论】:

    标签: amazon-web-services iis-8 amazon-elb


    【解决方案1】:

    实施URL Rewrite Module 2.0 规则以基于 URL 模式进行重定向并不意味着将 SSL 卸载到 IIS,并且您不需要在 IIS 上安装 SSL 证书,因为您已经将证书上传到 ELB。

    在 IIS 上安装 URL Rewrite 后,通常你会在Web.config 中编写你的重写规则,如下所示:

    <system.webServer>
      <rewrite>
        <rules>
          <rule name="Redirect to HTTPS" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
              <add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$" ignoreCase="false" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
          </rule>
        </rules>
        <outboundRules>
          <rule name="Add Strict-Transport-Security when HTTPS" enabled="true">
            <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
            <conditions>
              <add input="{HTTPS}" pattern="on" ignoreCase="true" />
            </conditions>
            <action type="Rewrite" value="max-age=31536000" />
          </rule>
        </outboundRules>
      </rewrite>
    </system.webServer>
    

    您可能会发现有关如何解决证书错误here 的其他有用信息。

    【讨论】:

      【解决方案2】:

      当您访问 HTTPS 网站时,如果需要加载的其他一些资产(例如图像、CSS 文件、JS 文件等)来自 HTTP 位置,那么您的浏览器将/可能会抱怨连接不安全。

      使用 Web 浏览器的开发者工具,查看是否有任何 HTTP 而非 HTTPS 连接(返回到您的服务器或另一台服务器)。

      【讨论】:

        【解决方案3】:

        看起来我的问题实际上是我使用的证书和 dns 名称的问题。我们使用通配符 ssl 证书(即 *.example.com),并且我的 ELB 的 CNAME 记录设置为类似 test01.stage.example.com。

        一旦我将 CNAME 记录更改为 test01.example.com 并从 IIS 服务器中删除了 ssl 证书,一切正常。我对通配符证书有点误解。我只是假设 *.example.com 会捕获任何内容,即使它是 3 级或 4 级域。

        【讨论】:

          猜你喜欢
          • 2023-03-17
          • 2011-06-18
          • 1970-01-01
          • 2011-09-18
          • 1970-01-01
          • 2020-11-13
          • 1970-01-01
          • 2012-05-04
          • 2019-07-26
          相关资源
          最近更新 更多