Car*_*dez 5 c# powershell linkedin tls1.2
我们有一个运行 .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之后的握手期间连接被重置:
你好的相关部分是:
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)
Run Code Online (Sandbox Code Playgroud)
我们还有另一个使用 Twitter 的工作流程,与 Linkedin 一样,它只允许使用 TLS 1.2 并且运行正常。因此,除了我们的研究之外,我们并不确定问题是否来自 TLS。
此应用程序在 Windows Server 2012 R2 和 IIS 8 下运行。在过去几周内未应用任何可能影响此行为的更新。
有谁知道这个问题的原因是什么?
经过一番研究,我们发现 Linkedin 只允许以下协议:
之前的列表是从ssllabs.com获得的
检查我们的配置,我们发现我们的服务器中没有启用它们。检查文档后,我们发现前两个协议不适用于Windows Server 2012 R2,而Windows Server 2016中提供了前两个协议
因此,我们只需使用“密码套件”选项卡中名为IIS Crypto 的工具启用最后两个协议并重置计算机即可。
归档时间: |
|
查看次数: |
842 次 |
最近记录: |