小编Car*_*dez的帖子

底层连接已被linkedin关闭

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

https://www.linkedin.com/oauth/v2/accessToken
Run Code Online (Sandbox Code Playgroud)

它一直工作到 2020/07/14 之后,它开始在我们所有的环境中失败,并出现以下错误:

发送请求时发生错误。底层连接已关闭:发送时发生意外错误。无法从传输连接读取数据:现有连接已被远程主机强行关闭。现有连接已被强行关闭通过远程主机

我们一直在运行一些测试,我们发现可以在 PowerShell 中使用以下命令重现错误:

Invoke-WebRequest -Uri https://www.linkedin.com
Run Code Online (Sandbox Code Playgroud)

经过一番研究,我们意识到我们可以使用以下命令强制 PowerShell 使用 TLS 1.2:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Run Code Online (Sandbox Code Playgroud)

但它在我们的 IIS 服务器中不起作用。在其他没有安装 IIS 的服务器中,该命令可以正常工作,我们可以正确访问 Linkedin URL。

我们还尝试在 C# 中执行相同的操作,结果相同:

System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Run Code Online (Sandbox Code Playgroud)

似乎错误与Tls12有关,所以我们开始用Wireshark查看,我们发现在HELLO之后的握手期间连接被重置: Wireshark 日志

你好的相关部分是:

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: …
Run Code Online (Sandbox Code Playgroud)

c# powershell linkedin tls1.2

5
推荐指数
1
解决办法
842
查看次数

标签 统计

c# ×1

linkedin ×1

powershell ×1

tls1.2 ×1