gpt4 book ai didi

c# - 底层连接已用linkedin关闭

转载 作者:行者123 更新时间:2023-12-02 22:13:48 26 4
gpt4 key购买 nike

我们有一个运行 .Net Framework 4.6.1 的应用程序,它可以访问 Linkedin 并调用端点:

https://www.linkedin.com/oauth/v2/accessToken
它一直工作到 2020 年 7 月 14 日之后,它开始在我们所有的环境中失败,并出现以下错误:

An error occurred while sending the request.The underlying connection was closed: An unexpected error >occurred on a send.Unable to read data from the transport connection: An existing connection was forcibly >closed by the remote host.An existing connection was forcibly closed by the remote host


我们一直在运行一些测试,我们发现我们可以在 PowerShell 中使用以下命令重现错误:
Invoke-WebRequest -Uri https://www.linkedin.com
经过一番研究,我们意识到我们可以使用以下命令强制 PowerShell 使用 TLS 1.2:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
但它在我们的 IIS 服务器中不起作用。在其他没有安装 IIS 的服务器上,该命令可以正常工作,我们可以正确访问 Linkedin URL。
我们还尝试在 C# 中进行等效操作,结果相同:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
似乎该错误与 Tls12 有关,因此我们开始使用 Wireshark 进行查看,我们发现在 HELLO 之后的握手期间连接被重置:
Wireshark log
hello 的相关部分是:
Handshake Protocol: Client Hello
Handshake Type: Client Hello (1)
Length: 153
Version: TLS 1.2 (0x0303)
Random: 5f1536566faf9700973045f3e502909a269ec62f2df23243…
Session ID Length: 0
Cipher Suites Length: 32
Cipher Suites (16 suites)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Compression Methods Length: 1
Compression Methods (1 method)
Extensions Length: 80
Extension: server_name (len=21)
Extension: supported_groups (len=8)
Extension: ec_point_formats (len=2)
Extension: signature_algorithms (len=20)
Extension: session_ticket (len=0)
Extension: extended_master_secret (len=0)
Extension: renegotiation_info (len=1)
我们还有另一个使用 Twitter 的工作流程,与 Linkedin 一样,它只允许 TLS 1.2 并且工作正常。因此,除了我们的研究之外,我们并不确定问题是否来自 TLS。
此应用程序在 Windows Server 2012 R2 和 IIS 8 下运行。过去几周没有应用任何可能影响此行为的更新。
有谁知道这个问题可能是什么原因?

最佳答案

经过一番研究,我们发现 Linkedin 只允许以下协议(protocol):

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x9f)
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x9e)

  • 上一个列表来自 ssllabs.com
    检查我们的配置,我们意识到我们的服务器中没有启用它们。查看文档,我们看到前两个协议(protocol)不适用于 Windows Server 2012 R2。可从 Windows Server 2016 获得
    因此,我们只需要使用一个名为 IIS Crypto 的工具来启用最后两个协议(protocol)。在“密码套件”选项卡中并重置计算机。
    enter image description here

    关于c# - 底层连接已用linkedin关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62991951/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com