앞서 TLS 핸드셰이크와 그 실패 원인에 대해 다룬 적이 있습니다. 흥미롭게도 상당수의 TLS 오류는 마이크로소프트가 보안 취약점을 수정하는 과정에서 발생했습니다. 대표적인 사례가 바로 보안 업데이트 CVE-2019-1318로, 이 업데이트 배포 이후 TLS 및 SSL 연결이 간헐적으로 실패하거나 응답이 크게 지연되어 결국 시간 초과(timeout)로 이어지는 문제가 보고되었습니다. 이번 글에서는 Windows 시스템에서 발생하는 TLS 실패 및 시간 초과 문제를 해결할 수 있는 방법을 소개합니다.

이 문제로 인해 자주 나타나는 오류 메시지는 다음과 같습니다:
- "요청이 중단되었습니다. SSL/TLS 보안 채널을 만들 수 없습니다(The request was aborted: Could not create SSL/TLS secure channel)"
- 오류 코드 0x8009030f
- 시스템 이벤트 로그에 SCHANNEL 이벤트 36887(경고 코드 20) 기록 — "원격 엔드포인트에서 치명적인 경고를 받았습니다. TLS 프로토콜에 정의된 치명적인 경고 코드는 20입니다."
TLS 실패의 영향을 받는 Windows 버전
CVE-2019-1318 취약점은 공격자에게 중간자(man-in-the-middle) 공격의 기회를 제공할 수 있었습니다. 마이크로소프트는 이를 수정하기 위해 업데이트를 배포했지만, 그 결과로 TLS 연결 실패와 시간 초과 문제가 발생하게 되었습니다.
마이크로소프트에 따르면, 이 문제는 확장 비밀 마스터(Extended Master Secret, EMS) 확장을 지원하지 않는 장치로 TLS 연결을 시도할 때만 발생합니다. 양쪽 장치 모두 EMS를 지원한다면 문제는 발생하지 않습니다. 현재까지 영향을 받는 것으로 확인된 Windows 버전은 다음과 같습니다:
- Windows 10 버전 1607
- Windows Server 2016
- Windows 10
- Windows 8.1
- Windows Server 2012 R2
- Windows Server 2012
- Windows 7 서비스 팩 1(SP1)
- Windows Server 2008 R2 서비스 팩 1(SP1)
- Windows Server 2008 서비스 팩 2(SP2)
보안 업데이트로 인해 영향을 받는 Windows 업데이트 목록
영향을 받는 플랫폼용으로 2019년 10월 8일 이후 배포된 최신 누적 업데이트(LCU) 또는 월별 롤업(Monthly Rollup)은 이 문제를 겪을 수 있습니다:
- KB4517389 — Windows 10 버전 1903용 LCU
- KB4519338 — Windows 10 버전 1809 및 Windows Server 2019용 LCU
- KB4520008 — Windows 10 버전 1803용 LCU
- KB4520004 — Windows 10 버전 1709용 LCU
- KB4520010 — Windows 10 버전 1703용 LCU
- KB4519998 — Windows 10 버전 1607 및 Windows Server 2016용 LCU
- KB4520011 — Windows 10 버전 1507용 LCU
- KB4520005 — Windows 8.1 및 Windows Server 2012 R2용 월별 롤업
- KB4520007 — Windows Server 2012용 월별 롤업
- KB4519976 — Windows 7 SP1 및 Windows Server 2008 R2 SP1용 월별 롤업
- KB4520002 — Windows Server 2008 SP2용 월별 롤업
- KB4519990 — Windows 8.1 및 Windows Server 2012 R2용 보안 전용 업데이트
- KB4519985 — Windows Server 2012 및 Windows Embedded 8 Standard용 보안 전용 업데이트
- KB4520003 — Windows 7 SP1 및 Windows Server 2008 R2 SP1용 보안 전용 업데이트
- KB4520009 — Windows Server 2008 SP2용 보안 전용 업데이트
Windows에서 TLS 실패·시간 초과 문제 해결 방법
마이크로소프트는 TLS 실패 및 시간 초과 문제를 해결할 수 있는 세 가지 방법을 안내하고 있습니다.
- 클라이언트와 서버 양쪽에서 EMS 활성화
- TLS_DHE_* 암호 그룹(cipher suite) 제거
- 레지스트리를 통해 Windows 10/Windows Server의 EMS 활성화 또는 비활성화
단, 이러한 임시 해결책에는 특히 보안 측면에서 단점이 있을 수 있으므로 적용 전에 신중하게 검토해야 합니다.
1] 클라이언트와 서버 양쪽에서 EMS 활성화
앞서 언급했듯이 클라이언트와 서버 양쪽 모두 EMS를 지원하면 문제가 발생하지 않으므로, 가장 확실한 해결책입니다. 2019년 10월 8일 이후 배포된 릴리스에는 EMS가 기본적으로 활성화되어 있지만, 만약 그렇지 않다면 EMS(Extended Master Secret) 확장 지원이 활성화되어 있는지 반드시 확인하세요.
IT 관리자라면 RFC 7627에서 정의한 EMS 재개(resumption) 기능을 완전히 지원하는지도 함께 점검해야 합니다.
2] TLS_DHE_* 암호 그룹 제거
운영체제가 EMS를 지원하지 않는 경우, IT 관리자는 TLS 클라이언트 장치 운영체제의 암호 그룹 목록에서 TLS_DHE_* 암호 그룹을 제거해야 합니다. Schannel 암호 그룹 우선순위 지정에 관한 마이크로소프트의 공식 문서를 참고하면 도움이 됩니다.
다만 이 방법은 어디까지나 임시적인 조치이며, 해당 암호 그룹을 비활성화하면 오히려 중간자 공격에 노출될 위험이 커진다는 점을 유의해야 합니다.
3] 레지스트리로 Windows 10/Windows Server의 EMS 활성화/비활성화
이전에 어떤 TLS 문제 때문에 컴퓨터에서 EMS를 비활성화했다면, 서버와 클라이언트 양쪽에서 레지스트리 설정을 통해 다시 활성화할 수 있습니다.
- 레지스트리 편집기(regedit)를 실행합니다.
- 다음 경로로 이동합니다: HKLM\System\CurrentControlSet\Control\SecurityProviders\Schannel
- TLS 서버: DisableServerExtendedMasterSecret 값을 0으로 설정
- TLS 클라이언트: DisableClientExtendedMasterSecret 값을 0으로 설정
해당 값이 존재하지 않는다면 새로 생성하면 됩니다.
이 방법들이 TLS 관련 문제를 일시적으로 해결하는 데 도움이 되기를 바랍니다. 근본적인 수정 사항이 포함된 업데이트가 배포될 때까지 관련 소식을 주기적으로 확인하는 것이 좋습니다.