使用Azure的http到https端点

问题描述 投票:1回答:3

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

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

我怎么能和Azure一样?

amazon-web-services azure api-gateway
3个回答
0
投票

Azure Front Door是您需要的选项。

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

您可以将路由规则配置为仅接受http或https之一,或者两者都接受,然后路由详细信息允许您指定请求是仅作为HTTPS传递,仅传递HTTP(您想要什么)还是“匹配请求” :

Routing options within Front Door

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


0
投票

这有一个开源扩展:

  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".

enter image description here

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

有关此扩展的更多详细信息,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>

0
投票

更新

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

如果您的目标是为您的应用程序强制执行HTTPS,那么CDN可能不是最佳选择,因为CDN用于向全球分散的客户提供低可用性和高可用性的静态内容。虽然,您可以将HTTPS与CDN一起使用,但这将导致使用CDN服务的成本。

因此,如果您的主要目标是使用HTTP,则下面的过程是将SSL绑定到您的自定义domian名称,以强制与您的网站进行HTTPS通信。

使用Microsoft Azure,您可以使用SSL证书绑定Webapp,以便通过https访问它。为了做到这一点,你需要;

  1. 创建了一个App Service应用程序
  2. 将自定义DNS名称映射到App Service应用程序
  3. 从受信任的证书颁发机构获取SSL证书
  4. 拥有用于签署SSL证书请求的私钥

在Azure Azure门户中,访问要为其添加SSL证书的webapp。然后点击应用左侧导航栏中的SSL设置。然后单击上载证书以将其添加到您的Web应用程序中。

然后,在“SSL绑定”部分中,单击“添加绑定”。在“添加SSL绑定”页面中,使用下拉列表选择要保护的域名以及要使用的证书。

执行HTTPS: -

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

有关更多信息和完整教程,请访问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 managed”。
  5. 选择“启用”以启用HTTPS。

有关更多信息,请参阅Configure HTTPS on an Azure CDN custom domain

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

© www.soinside.com 2019 - 2024. All rights reserved.