【问题标题】:http to https endpoint with Azure使用 Azure 的 http 到 https 端点
【发布时间】:2019-08-08 10:46:33
【问题描述】:

使用 AWS,我可以使用 API Gateway 和 CloudFront 将 http 转换为 https 端点,并获得如下所示的 URL,

https://4z9giyi2c1.execute-api.us-west-2.amazonaws.com/test/petstore/pets?type=fish

我怎样才能对 Azure 做同样的事情?

【问题讨论】:

  • 您使用的是哪一层 CDN,因为答案略有不同。如果您使用“Premium Verizon”,请参阅 this answer?
  • 我们使用 Premium Verizon。 Azure 和 Verizon 之间存在集成问题。根据以下答案,Front Door 是正确的解决方案。

标签: amazon-web-services azure api-gateway


【解决方案1】:

Azure Front Door 是您需要的选项。

此服务在一项服务中提供了一个组合的 Web 应用程序防火墙、流量管理器(用于路由)和 CDN。更重要的是,与 Azure 提供的其他普通 CDN 不同,它允许 SSL 终止:

您可以将路由规则配置为仅接受 http 或 https 之一,或同时接受两者,然后路由详细信息允许您指定请求是否以 HTTPS Only、HTTP Only(您想要的)或“匹配请求”:

然后,您可以为重定向到 HTTPS 的非 HTTPS 流量设置后续规则,强制所有流量安全。

【讨论】:

  • 感谢分享解决方案。这是我的问题的正确答案。
【解决方案2】:

有一个开源扩展:

  1. 转到您的 Azure 应用服务Development Tools 栏,您可以在那里找到Extensions 选项卡,然后单击添加。

  2. 之前有一个扩展名Redirect HTTP to HTTPS,但是我找不到它知道,但我找到了一个新的扩展名Security Settings: HTTPS Redirect w/KeepAlive Support, Headers incl HSTS, CSP, and More. "Medium strength".

  1. 添加扩展并重新启动网络。

有关此扩展程序的更多详细信息,check the source code on github。主要的重要文件是applicationhost.xdt。它写入规则“将 HTTP 重定向到 HTTPS”。

          <rewrite xdt:Transform="InsertIfMissing">
                <rules xdt:Transform="InsertIfMissing" lockElements="clear">
                    <rule name="redirect HTTP to HTTPS" enabled="true" stopProcessing="true" lockItem="true" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)">
                        <match url="(.*)" />
                        <conditions>
                            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                            <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
                            <add input="{HTTP_USER_AGENT}" pattern="Initialization" negate="true" ignoreCase="false" />
                            <add input="{HTTP_USER_AGENT}" pattern="SiteWarmup" negate="true" ignoreCase="false" />
                            <add input="{HTTP_USER_AGENT}" pattern="AlwaysOn" negate="true" ignoreCase="false" />
                        </conditions>
                        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
                    </rule>
                </rules>
            </rewrite>

【讨论】:

  • 我不想从 http 重定向到 https。而是使用 https 地址代理 http。能不能给个http url,得到一个可以代理http的https url?
  • @Kannaiyan,实际上,如果您只使用默认域,您将获得一个(免费)ssl 用于您的网络,您可以访问 https 站点。但是,如果您要使用它进行生产,强烈建议您使用自己的域和自己的 SSL 证书(购买一个)。
  • 为什么推荐自己的域和自己的SSL?
  • @Kannaiyan,这就是整个 [关于如何将 ssl 绑定到您的网络的教程](docs.microsoft.com/en-us/azure/app-service/…)。如果你想像 Let's Encrypt 一样使用你可以去 this blog ,它结合了 Let's Encrypt 扩展来将你的网站更改为 https://。
  • @Kannaiyan,如果您只是测试/玩耍 - 那么您可以安全地使用提供的默认设置。
【解决方案3】:

更新

CloudFront 是 AWS CND,它是一个分布式服务器网络,可以有效地向用户提供 Web 内容。 CDN 将缓存内容存储在靠近最终用户的入网点 (POP) 位置的边缘服务器上,以最大限度地减少延迟。 Azure 的 CDN 是 Azure Content Delivery Network (CDN)

如果您的目标是为您的应用程序强制实施 HTTPS,那么 CDN 可能不是最佳可用选项,因为 CDN 用于向全球分散的客户提供具有低延迟和高可用性的静态内容。虽然,您可以将 HTTPS 与 CDN 一起使用,但这会产生使用 CDN 服务的费用。

因此,如果您的主要目标是使用 HTTPS,那么以下过程适用于 将 SSL 绑定到您的自定义域名以强制 HTTPS 通信 与您的网站。

使用 Microsoft Azure,您可以将您的 Web 应用程序与 SSL 证书绑定,以便通过 https 访问它。为此,您需要拥有;

  1. 创建了一个应用服务应用

  2. 将自定义 DNS 名称映射到您的应用服务应用

  3. 从受信任的证书颁发机构获得 SSL 证书

  4. 拥有用于签署 SSL 证书请求的私钥

在您的 Azure 门户中,访问您要为其添加 SSL 证书的 webapp。然后点击应用左侧导航中的SSL 设置。然后点击上传证书将其添加到您的网络应用中。

之后,在 SSL 绑定部分,点击添加绑定。在“添加 SSL 绑定”页面中,使用下拉菜单选择要保护的域名和要使用的证书。

强制执行 HTTPS:-

您可以将所有 HTTP 请求重定向到 HTTPS 端口。 在您的应用页面的左侧导航中,选择 SSL 设置。然后,在 HTTPS Only 中,选择 On。

更多信息和完整教程请访问Tutorial: Bind an existing custom SSL certificate to Azure App Service

但是,如果您打算将 CDN 服务与安全 HTTP 一起使用 下面是使用 Azure CDN 启用 使用 SSL 的自定义域。

  1. 在 Azure 门户中,浏览到 Microsoft 的 Azure CDN Standard、Akamai 的 Azure CDN Standard、Verizon 的 Azure CDN Standard 或 Verizon 的 Azure CDN Premium 配置文件。
  2. CDN 端点 列表中,选择包含您的自定义域的端点。
  3. 自定义域列表中,选择您要为其启用 HTTPS 的自定义域。
  4. 证书管理类型下,选择 CDN 管理。
  5. 选择开启以启用 HTTPS。

更多信息请参考Configure HTTPS on an Azure CDN custom domain

如果您只想将 HTTP 流量重定向到 Azure CDN 中的 HTTP,则只需使用 Azure CDN 规则引擎创建 URL 重定向规则。更多信息请参考HTTP-to-HTTPS redirection

【讨论】:

  • CloudFront 或 API Gateway 自带 SSL,不需要任何其他额外配置。我是否需要编写任何代码来将请求转发到目标 URL?
  • 不,您不需要编写任何额外的代码将请求转发到目标 url。请参阅我的更新答案。
猜你喜欢
  • 2020-01-20
  • 2012-12-02
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多