Powershell Invoke-WebRequest使用SSL / TLS安全通道失败

Powershell Invoke-WebRequest Fails with SSL/TLS Secure Channel

我正在尝试执行此PowerShell命令

Invoke-WebRequest -Uri https://apod.nasa.gov/apod/

我得到这个错误。"invoke webrequest:请求被中止:无法创建SSL/TLS安全通道。"https请求似乎可以工作"("https://google.com"),但这一个没有问题。如何使其正常工作或使用其他PowerShell命令读取页面内容?


试着用这个

1
2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri https://apod.nasa.gov/apod/


在无耻地企图窃取一些选票时,SecurityProtocol是一个Enum带有[Flags]属性的Enum。所以你可以这样做:

1
2
3
4
[Net.ServicePointManager]::SecurityProtocol =
  [Net.SecurityProtocolType]::Tls12 -bor `
  [Net.SecurityProtocolType]::Tls11 -bor `
  [Net.SecurityProtocolType]::Tls

或者,由于这是PowerShell,您可以让它为您解析字符串:

1
[Net.ServicePointManager]::SecurityProtocol ="tls12, tls11, tls"

那么从技术上讲,您不需要知道TLS版本。

我从我读过这个答案后创建的一个脚本中复制和粘贴这个,因为我不想循环使用所有可用的协议来找到一个有效的。当然,如果你想的话,你可以这样做。

最后一点注意-我的PowerShell配置文件中有原始(减去so edits)语句,所以它在我现在开始的每个会话中。这并非完全是万无一失的,因为仍有一些网站刚刚失败,但我肯定看到的问题信息更不频繁。


这个对我有用

1
[Net.ServicePointManager]::SecurityProtocol ="tls12, tls11, tls"


它对我有用…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
if (-not ([System.Management.Automation.PSTypeName]'ServerCertificateValidationCallback').Type)
    {
    $certCallback = @"
        using System;
        using System.Net;
        using System.Net.Security;
        using System.Security.Cryptography.X509Certificates;
        public class ServerCertificateValidationCallback
        {
            public static void Ignore()
            {
                if(ServicePointManager.ServerCertificateValidationCallback ==null)
                {
                    ServicePointManager.ServerCertificateValidationCallback +=
                        delegate
                        (
                            Object obj,
                            X509Certificate certificate,
                            X509Chain chain,
                            SslPolicyErrors errors
                        )
                        {
                            return true;
                        };
                }
            }
        }
   "
@
        Add-Type $certCallback
     }
    [ServerCertificateValidationCallback]::Ignore()

Invoke-WebRequest -Uri https://apod.nasa.gov/apod/

我不知道原因,但重新安装.pfx证书(在当前用户和本地机器中)对我来说都是有效的。