이 powershell 명령을 실행하려고합니다.
Invoke-WebRequest -Uri https://apod.nasa.gov/apod/
이 오류가 발생합니다. “Invoke-WebRequest : 요청이 중단되었습니다 : SSL / TLS 보안 채널을 만들 수 없습니다.” https 요청이 작동하는 것 같지만 ( ” https://google.com “) 문제가되지는 않습니다. 이 작업을 수행하거나 다른 powershell 명령을 사용하여 페이지 내용을 읽으려면 어떻게해야합니까?
답변
이것을 사용해보십시오
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri https://apod.nasa.gov/apod/
답변
일부 표를 훔치는 파렴치한 시도에서 SecurityProtocol
입니다 Enum
와 [Flags]
속성. 그래서 당신은 이것을 할 수 있습니다 :
[Net.ServicePointManager]::SecurityProtocol =
[Net.SecurityProtocolType]::Tls12 -bor `
[Net.SecurityProtocolType]::Tls11 -bor `
[Net.SecurityProtocolType]::Tls
또는 이것이 PowerShell이므로 문자열을 구문 분석하도록 할 수 있습니다.
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
그러면 기술적으로 TLS 버전을 알 필요가 없습니다.
사용 가능한 모든 프로토콜을 순환하여 작동하는 프로토콜을 찾기를 원하지 않기 때문에이 답변을 읽은 후에 만든 스크립트에서 이것을 복사하여 붙여 넣었습니다. 물론 원한다면 그렇게 할 수 있습니다.
마지막 참고 사항-PowerShell 프로필에 원본 (마이너스 SO 편집) 문이 있으므로 지금 시작하는 모든 세션에 있습니다. 여전히 실패한 사이트가 있기 때문에 완전히 바보는 아니지만 확실하게 문제의 메시지를 훨씬 덜 보게됩니다.
답변
나처럼 위의 어느 것도 제대로 작동하지 않으면 더 낮은 TLS 버전 만 사용하는 것이 좋습니다. 나는 다음 두 가지를 모두 시도했지만 내 문제를 해결하지 못하는 것 같습니다.
[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls
결국 TLS 1.0 (특히 코드에서 1.1 및 1.2 제거)을 대상으로 한 경우에만 작동했습니다.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls
원격 서버 (이전에 제 3자가 TLS 1.2에 대해 “확인”했음)는 보이지 않지만 로컬 서버 (이 시도 중)는 TLS 1.2에 적합합니다.
이것이 누군가를 돕기를 바랍니다.
답변
그것은 나를 위해 작동합니다 …
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/
답변
SHELL을 먼저 전환하십시오.
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
RUN [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
RUN Invoke-WebRequest -UseBasicParsing -Uri 'https://github.com/git-for-windows/git/releases/download/v2.25.1.windows.1/Git-2.25.1-64-bit.exe' -OutFile 'outfile.exe'
답변
이유를 알지 못했지만 .pfx
인증서 (현재 사용자 및 로컬 컴퓨터 모두)를 다시 설치하면 효과가 있습니다.