Powershell Invoke-WebRequest Fails with SSL/TLS Secure Channel
我正在尝试执行此PowerShell命令
我得到这个错误。"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/ |
在无耻地企图窃取一些选票时,
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/ |
我不知道原因,但重新安装