【问题标题】:Azure Traffic Manager SSL Setup (not classic)Azure 流量管理器 SSL 设置(非经典)
【发布时间】:2019-08-29 00:41:42
【问题描述】:

我有一个 Azure API 应用服务,我想为其配置“优先级”流量管理(这是新的流量管理器,不是经典的)。我已将该服务部署到两个单独的 Azure 区域,并配置了一个流量管理器实例来执行到两个服务实例的优先路由。这些服务具有以下自定义域配置:

foo1.mydomain.com

foo2.mydomain.com

我有两个子域的 A 记录指向各自的 Azure 应用服务 IP 地址。

我还为服务附加了一个通配符证书,如果我导航到https://foo1.mydomain.comhttps://foo2.mydomain.com,一切都会很好。流量管理器端点监控显示两个端点都在线并启用。

现在,我想让客户端向虚端点发出请求:foo.mydomain.com,我已经为其创建了一个 CNAME。 CNAME 指向流量管理器实例 URL myapi.trafficmanager.net。

当我尝试使用 SSL/TLS(即https://foo.mydomain.com)解析虚 URL 时,我收到证书错误,因为流量管理器正在附加 *.azurewebsited.net 证书。如果我尝试在没有 SSL/TLS 的情况下解析虚 URL,即http://foo.mydomain.com,我会收到 404 和“找不到 Web 应用程序”消息。同样,解析各个端点显式返回 200,如预期的那样。

我的问题:如何正确配置 Azure 流量管理器以使用我的 SSL/TLS 证书和虚 URL 为两个自定义域名执行优先路由?

挖掘输出供参考:

my-machine:~ jtw$ dig foo.mydomain.com

; <<>> DiG 9.8.3-P1 <<>> foo.mydomain.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4088
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;foo.mydomain.com.      IN  A

;; ANSWER SECTION:
foo.mydomain.com.   299 IN  CNAME   myapi.trafficmanager.net.
myapi.trafficmanager.net. 299 IN    CNAME   foo1.mydomain.com.
foo1.mydomain.com.  299 IN  A   192.168.1.1 //the actual IP of my first priority endpoint is returned here

;; Query time: 369 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Jul  3 11:13:59 2016
;; MSG SIZE  rcvd: 112

【问题讨论】:

    标签: azure https dns failover azure-traffic-manager


    【解决方案1】:

    请看https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-how-it-works

    由于流量管理器在 DNS 级别工作,因此您看到的证书 (*.azurewebsites.net) 必须来自应用服务,而不是来自流量管理器。您需要配置您的应用服务以使用正确的 SSL 证书。

    我建议您尝试在没有流量管理器的情况下让一切正常运行,将您的虚域 foo.mydomain.com 设置为您的端点之一 (foo1.mydomain.com) 的 CNAME。然后切换 CNAME 以指向另一个端点 (foo2.mydomain.com) 并再次确保一切正常。由于此时任何问题都不能涉及流量管理器,因此它们更易于调试。

    一旦你有这个工作,然后将流量管理器重新引入 CNAME 链。

    问候,

    Jonathan Tuliani,Azure 网络项目经理 - DNS 和流量经理

    【讨论】:

    • 谢谢乔纳森。这让我朝着正确的方向前进。我没有意识到我需要分配虚域名,并将证书绑定到两个端点上的虚域。一旦我这样做了,一切都会按预期进行。
    • 不客气!请投票,以便其他人可以看到...谢谢。很高兴它现在对你有用。
    【解决方案2】:

    需要为每个端点应用服务分配虚域名,并且证书需要绑定到各个端点,即 foo1 和 foo2 以及虚端点。 您需要将证书绑定到将用作端点的所有应用服务中的虚域

    DNS配置需要如下:

    每个应用服务终结点域的 A 记录,指向 Azure 为应用服务分配的 IP 地址。

    从虚域指向 *.trafficmanager.net 域的 CNAME。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,并在应用以下 Azure 和 DNS 配置后最终解决了该问题。我缺少的部分是在每个端点上注册 foo.mydomain.com。唯一域必须在api域之前绑定,否则api域管辖。

      Traffic Manager Endpoints
      foo1.mydomain.com
      foo2.mydomain.com
      
      Endpoint 1 App Service SSL Bindings:
      foo1.mydomain.com (Must Be Added First)
      foo.mydomain.com
      
      Endpoint 2 App Service SSL Bindings:
      foo2.mydomain.com (Must Be Added First)
      foo.mydomain.com
      
      mydomain.com DNS Records
      CNAME Host: foo, Value: myapi.trafficmanager.net
      CNAME Host: foo1, Value: endpoint1.azurewebsites.net
      CNAME Host: foo2, Value: endpoint2.azurewebsites.net
      

      【讨论】:

        【解决方案4】:

        Traffic Manager 没有附加任何内容,因为它不是 Web 服务器,它只是一个比您的平均水平更智能的名称服务器。

        将您的流量管理器端点重新定义为:

        foo.domain.com
        bar.domain.com
        

        而不是 .azurewebsites.net 域。

        【讨论】:

        • 您指的是流量管理器“经典”吗?我知道流量管理器实际上只是一个 DNS 组件,我的问题是新的流量管理器似乎不支持解析到许多底层 SSL/TLS 端点之一的虚入口点。
        • 当前流量管理器(ARM 或 ASM)不能位于根级域 (@) domain.com 后面。您需要改为 something.domain.com。但是你提到了 vanity 域和foo.mydomain.com,所以如果后者是正确的,你就不属于这个限制。
        • 为了清楚起见,用dig your.public-facing-domain.com 的输出修改您的问题,并编辑您认为必要的任何内容。如果手边没有 Linux 机器,可以使用digwebinterface.com
        • 没错,我对两个端点和虚域都使用了一个子域。挖掘输出已附加到问题中。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-05
        • 2016-07-08
        • 1970-01-01
        • 1970-01-01
        • 2017-09-15
        • 1970-01-01
        相关资源
        最近更新 更多