Invoke-WebRequest:请求被中止:无法创建SSL / TLS安全通道

时间:2019-01-23 15:37:44

标签: asp.net-mvc

Invoke-WebRequest : The request was aborted: Could not create SSL/TLS secure channel.
At line:4 char:6
+ $r = Invoke-WebRequest -Uri $url
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

当其他应用程序尝试访问我的服务时,我的客户端遇到此问题。 我启用了TLS 1.1。和我服务器上的1.2

3 个答案:

答案 0 :(得分:1)

如果客户端尝试使用TLS 1.0协商请求,但仅支持TLS 1.1和1.2,则会出现此错误。

在向您的服务提出请求之前,通过将以下代码添加到客户端的应用程序,尝试强制客户端使用TLS 1.2。

PowerShell:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

C#:

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

请参阅:

Update .NET web service to use TLS 1.2

Powershell Setting Security Protocol to Tls 1.2

答案 1 :(得分:1)

错误原因是Powershell默认使用TLS 1.0连接网站,但网站安全需要TLS 1.2。您可以通过运行以下任何命令来更改此行为以使用所有协议。您也可以指定单个协议。

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls, [Net.SecurityProtocolType]::Tls11, [Net.SecurityProtocolType]::Tls12, [Net.SecurityProtocolType]::Ssl3
[Net.ServicePointManager]::SecurityProtocol = "Tls, Tls11, Tls12, Ssl3"

答案 2 :(得分:0)

您是说我应该要求第三方在致电我们的服务之前向其应用程序添加以下代码?

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

这意味着问题出在他们的网站上?? 因为我已经在服务器上启用了所有TLS版本。