Azure 转发到GitHub页面时代理中断

Azure 转发到GitHub页面时代理中断,azure,azure-functions,Azure,Azure Functions,大约2个月前,我们为我们的网站配置了一个功能代理,并使一切都按预期运行。昨晚美国东部时间晚上8:00-8:30左右,代理停止工作,在访问其端点时收到“内部服务器错误”500条消息。我们没有改变任何事情,所以我不知道为什么这一切突然开始 我们将域代理到各个端点。停止工作的端点是我们在GitHub页面上托管的页面的代理。其他服务(如其他Azure应用程序服务实例)的代理仍在工作 我向代理运行了一个代理跟踪启用:true请求,并在跟踪日志中发现以下错误: "backend": [ { "s

大约2个月前,我们为我们的网站配置了一个功能代理,并使一切都按预期运行。昨晚美国东部时间晚上8:00-8:30左右,代理停止工作,在访问其端点时收到“内部服务器错误”500条消息。我们没有改变任何事情,所以我不知道为什么这一切突然开始

我们将域代理到各个端点。停止工作的端点是我们在GitHub页面上托管的页面的代理。其他服务(如其他Azure应用程序服务实例)的代理仍在工作

我向代理运行了一个
代理跟踪启用:true
请求,并在跟踪日志中发现以下错误:

"backend": [
  {
    "source": "forward-request",
    "timestamp": "2018-01-31T01:45:36.4810022Z",
    "elapsed": "00:00:00.0037370",
    "data": {
      "message": "Request is being forwarded to the backend service.",
      "request": {
        "method": "GET",
        "url": "https://xxxxxxxxxx.github.io/xxxxxxxxxx/",
        "headers": [
          {
            "name": "Cache-Control",
            "value": "no-cache"
          },
          {
            "name": "Accept",
            "value": "*/*"
          },
          {
            "name": "Accept-Encoding",
            "value": "gzip"
          },
          {
            "name": "Cookie",
            "value": "__cfduid=xxxxxxxxxx"
          },
          {
            "name": "Max-Forwards",
            "value": "10"
          },
          {
            "name": "User-Agent",
            "value": "PostmanRuntime/7.1.1"
          },
          {
            "name": "CF-IPCountry",
            "value": "US"
          },
          {
            "name": "X-Forwarded-For",
            "value": "xxxxxxxxxx, xxxxxxxxxx, xxxxxxxxxx"
          },
          {
            "name": "CF-RAY",
            "value": "xxxxxxxxxx-MIA"
          },
          {
            "name": "X-Forwarded-Proto",
            "value": "https"
          },
          {
            "name": "CF-Visitor",
            "value": "{\"scheme\":\"https\"}"
          },
          {
            "name": "Postman-Token",
            "value": "xxxxxxxxxx"
          },
          {
            "name": "CF-Connecting-IP",
            "value": "xxxxxxxxxx"
          },
          {
            "name": "X-WAWS-Unencoded-URL",
            "value": "/"
          },
          {
            "name": "X-Original-URL",
            "value": "/"
          },
          {
            "name": "X-ARR-LOG-ID",
            "value": "xxxxxxxxxx"
          },
          {
            "name": "DISGUISED-HOST",
            "value": "xxxxxxxxxx.com"
          },
          {
            "name": "X-SITE-DEPLOYMENT-ID",
            "value": "xxxxxxxxxx"
          },
          {
            "name": "WAS-DEFAULT-HOSTNAME",
            "value": "xxxxxxxxxx.azurewebsites.net"
          },
          {
            "name": "Content-Length",
            "value": "0"
          }
        ]
      }
    }
  },
  {
    "source": "forward-request",
    "timestamp": "2018-01-31T01:45:36.5122512Z",
    "elapsed": "00:00:00.0363283",
    "data": {
      "messages": [
        "Error occured while calling backend service.",
        "The request was aborted: Could not create SSL/TLS secure channel."
      ]
    }
  }
],
我不确定为什么会出现“请求被中止:无法创建SSL/TLS安全通道”错误,因为我可以访问代理到的网站的GitHub pages版本而不会出现问题(无SSL问题)。我们现在必须禁用代理,并将DNS更改为直接指向GitHub页面,直到我们能够解决此问题

  • 这是怎么回事
  • 为什么我们这一方没有变化就突然中断了

也许GitHub突然切换到TLS 1.2-only并走开了

$ curl --tlsv1.0 -vki https://microsoft.github.io
...
* gnutls_handshake() failed: Error in protocol version



$ curl --tlsv1.1 -vki https://microsoft.github.io
...
* gnutls_handshake() failed: Error in protocol version



$ curl --tlsv1.2 -vki https://microsoft.github.io

* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
...
*   subject: C=US,ST=California,L=San Francisco,O=GitHub, Inc.,
             CN=www.github.com
*   issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,
            CN=DigiCert SHA2 High Assurance Server CA
...
HTTP/1.1 200 OK
我不知道你是否可以告诉函数代理使用特定的TLS版本进行出站连接,你知道,相当于

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

也许GitHub突然切换到TLS 1.2-only并走开了

$ curl --tlsv1.0 -vki https://microsoft.github.io
...
* gnutls_handshake() failed: Error in protocol version



$ curl --tlsv1.1 -vki https://microsoft.github.io
...
* gnutls_handshake() failed: Error in protocol version



$ curl --tlsv1.2 -vki https://microsoft.github.io

* SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
...
*   subject: C=US,ST=California,L=San Francisco,O=GitHub, Inc.,
             CN=www.github.com
*   issuer: C=US,O=DigiCert Inc,OU=www.digicert.com,
            CN=DigiCert SHA2 High Assurance Server CA
...
HTTP/1.1 200 OK
我不知道你是否可以告诉函数代理使用特定的TLS版本进行出站连接,你知道,相当于

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

你可以试着问这里-谢谢你的信息。很可能是原因。我会调查更多。现在问题已经被理解了。根本原因很可能是GitHub更改为只支持TLS1.2。查看我们将进行哪些跟踪修复。@kspearrin我们已部署了一个。请确保您的原始代码再次正常工作,好吗?@davidebo重新启动后,500错误似乎已经消失。您可以尝试在此处询问-谢谢您提供的信息。很可能是原因。我会调查更多。现在问题已经被理解了。根本原因很可能是GitHub更改为只支持TLS1.2。查看我们将进行哪些跟踪修复。@kspearrin我们已部署了一个。请确保您的原始代码再次正常工作,好吗?@davidebo重新启动后,500错误似乎已经消失。您是否可以直接或间接共享您的函数应用程序名(即应用程序名,而不是函数名!)?这将有助于我们进行调查。谢谢@Davidebo我很乐意以某种方式间接分享(或者如果可能的话,私下发邮件给你),不过,你的指示似乎是为了一个功能。这是一个代理,所以我不确定这些日志可能在哪里。跟踪日志显示“traceId”:“f1fb75a1337384de1a023cb495394e395”如果有帮助的话?当然可以通过电子邮件发送到david.ebbo(at)microsoft.com。@DavidEbbo已通过电子邮件发送。您可以直接或间接共享您的函数应用程序名(这是应用程序名,不是函数名!)?这将有助于我们进行调查。谢谢@Davidebo我很乐意以某种方式间接分享(或者如果可能的话,私下发邮件给你),不过,你的指示似乎是为了一个功能。这是一个代理,所以我不确定这些日志可能在哪里。跟踪日志显示“traceId”:“f1fb75a137384de1a023cb495394e395”如果有帮助的话?当然可以通过电子邮件发送到david.ebbo(at)microsoft.com。@DavidEbbo已通过电子邮件发送。