"요청이 중단되어 SSL/TLS 보안 채널을 생성하지 못했습니다"에 대한 이유 및 해결 방법
설명: 요청이 중단되었습니다. SSL/TLS 보안 채널을 생성하지 못했습니다. SSL/TLS 보안 채널을 생성할 수 없습니다.
빌드 플랫폼: Windows Server 2012, Windows 7 서비스 팩 1(SP1) 및 Windows Server 2008 R2 SP1
해결 방법 1:
HttpWebRequest 전에 코드 설정
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
솔루션 2
- 위 방법으로 문제가 해결되지 않으면 시스템 수준의 문제이므로 현재 사용 중인 시스템에 맞게 시스템 패치를 업데이트하세요.
Windows에서 WinHTTP의 기본 보안 프로토콜로 TLS 1.1 및 TLS 1.2를 사용하도록 업데이트합니다. 이 업데이트는 Windows Server 2012, Windows 7 서비스 팩 1(SP1) 및 Windows Server 2008 R2 SP1 1.1에서 TLS(전송 계층 보안)에 대한 지원을 제공합니다. 및 TLS 1.2 지원은 공식 문서를 참조하세요.https://support.microsoft.com/en-us/help/3140245/update-to-enable-tls-1-1-and-tls-1-2-as-default-secure-protocols-in-wi
업데이트 패치
기본값 설정
- SChannel 구성 요소 수준에서 Windows 7의 TLS 1.1 및 1.2 활성화(아래 2.1 또는 2.2 업데이트 중 하나 채택)
2.1. Microsoft는 레지스트리를 설치하고 업데이트합니다.http://download.microsoft.com/download/0/6/5/0658B1A7-6D2E-474F-BC2C-D69E5B9E9A68/MicrosoftEasyFix51044.msi
2.2. 레지스트리를 수동으로 업데이트하고 다음 레지스트리 코드를 복사하여 레지스트리로 가져옵니다. 새 txt를 생성하고 접미사 txt를 reg(레지스트리 키)로 변경한 다음 가져오기(가져오기 전에 백업 만들기)
1 | [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp] |
검증 시스템
- 시스템이 TLS1.2, TLS1.3을 지원하는지 확인하세요.
PowerShell이 열립니다.
Net.ServicePointManager::SecurityProtocol = [Net.SecurityProtocolType]::Ssl3 -bor [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12
해결 방법 3
- 이전 두 가지 방법 중 어느 것도 작동하지 않습니다. 시스템을 Windows 10으로 업그레이드하려면 궁극적인 방법만 사용할 수 있습니다.
기타 참고 콘텐츠
https://blogs.perficient.com/2016/04/28/tsl-1-2-and-net-support/
솔루션이 존재하지만 프레임워크 버전에 따라 다릅니다.
.NET 4.6 이상. TLS 1.2를 지원하기 위해 추가 작업을 수행할 필요가 없으며 기본적으로 지원됩니다.
.NET 4.5. TLS 1.2가 지원되지만 기본 프로토콜은 아닙니다. 선택해서 사용하셔야 합니다. 다음 코드는 TLS 1.2를 기본값으로 설정하므로 보안 리소스에 연결하기 전에 이를 실행해야 합니다.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
.NET 4.0. TLS 1.2는 지원되지 않지만 시스템에 .NET 4.5(또는 그 이상)가 설치된 경우 애플리케이션 프레임워크가 TLS 1.2를 지원하지 않더라도 TLS 1.2를 사용할 수 있는 옵션이 있습니다. 유일한 문제는 .NET 4.0의 SecurityProtocolType에 TLS1.2에 대한 항목이 없으므로 이 열거형 값의 숫자 표현을 사용해야 한다는 것입니다.
ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072;
.NET 3.5 이하. TLS 1.2(*)는 지원되지 않으며 해결 방법이 없습니다. 애플리케이션을 최신 버전의 프레임워크로 업그레이드하세요.
PS 시나리오 3의 경우 프로그래밍 방식으로 강제할 필요 없이 4.5에서 TLS 1.2를 기본적으로 사용하도록 강제하는 레지스트리 해킹도 있습니다.
PPS Microsoft의 Christian Pop이 아래에서 언급한 것처럼 TLS1.2 지원을 활성화하는 .NET 3.5용 최신 패치가 있습니다.
보다:
KB3154518 – 신뢰성 롤업 HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1
KB3154519 – 신뢰성 롤업 HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM
KB3154520 – 신뢰성 롤업 HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM
KB3156421 -1605 HotFix Rollup through Windows Update for Windows 10.