TLS(전송 계층 보안) 레지스트리 설정

적용 대상: 명시된 대로 Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows 11, Windows 10 및 이전 버전

이 문서에서는 SChannel SSP(보안 지원 공급자)를 통해 TLS(전송 계층 보안) 프로토콜 및 SSL(Secure Sockets Layer) 프로토콜의 Windows 구현에 대해 지원되는 레지스트리 설정 정보를 설명합니다. 이 문서에서 다루는 레지스트리 하위 키 및 항목은 SChannel SSP, 특히 TLS 및 SSL 프로토콜을 관리하고 문제를 해결하는 데 도움이 됩니다.

주의

이 정보는 문제를 해결하거나 필요한 설정이 적용되었는지 확인할 때 사용할 참조로 제공됩니다. 다른 대안이 없는 경우가 아니면 레지스트리를 직접 편집하지 않는 것이 좋습니다. 레지스트리 수정 내용은 적용되기 전에 레지스트리 편집기 또는 Windows 운영 체제에서 유효성이 검사되지 않습니다. 따라서 잘못된 값이 저장될 수 있으며, 이로 인해 시스템에서 복구할 수 없는 오류가 발생할 수 있습니다. 가능하면 레지스트리를 직접 편집하는 대신 그룹 정책 또는 MMC(Microsoft Management Console)와 같은 다른 Windows 도구를 사용합니다. 레지스트리를 편집해야 하는 경우 각별히 주의하세요.

SChannel 로깅

시스템 이벤트 로그에 저장되고 이벤트 뷰어 사용하여 볼 수 있는 SChannel 이벤트에 대한 8개의 로깅 수준이 있습니다. 이 레지스트리 경로는 DWORD 값이 1로 설정된 EventLogging 키 아래의 HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL저장됩니다.

10진수 또는 16진수 SChannel 로깅 이벤트
0 이벤트 없음
1 오류 이벤트
2 경고 이벤트
3 오류 및 경고 이벤트
4 정보 및 성공 이벤트
5 오류, 정보 및 성공 이벤트
6 경고, 정보 및 성공 이벤트
7 오류, 경고, 정보 및 성공 이벤트

참고 항목

SChannel 로깅 수준을 변경한 후 디바이스를 다시 부팅해야 합니다.

CertificateMappingMethods

서버 애플리케이션에 클라이언트 인증이 필요한 경우 SChannel은 클라이언트 컴퓨터에서 제공하는 인증서를 사용자 계정에 자동으로 매핑하려고 시도합니다. 인증서 정보를 Windows 사용자 계정에 연결하는 매핑을 만들어 클라이언트 인증서를 사용하여 로그인하는 사용자를 인증할 수 있습니다.

인증서 매핑을 만들고 사용하도록 설정하면 클라이언트가 클라이언트 인증서를 제공할 때마다 서버 애플리케이션이 해당 사용자를 적절한 Windows 사용자 계정에 자동으로 연결합니다.

대부분의 경우 인증서는 다음 두 가지 방법 중 하나로 사용자 계정에 매핑됩니다.

  • 단일 인증서가 단일 사용자 계정에 매핑됩니다(일대일 매핑).
  • 여러 인증서가 하나의 사용자 계정에 매핑됩니다(다대일 매핑).

SChannel 공급자는 네 가지 (4) 인증서 매핑 방법을 사용합니다.

  1. Kerberos S4U(사용자용 서비스) 매핑(기본적으로 사용)
  2. 사용자 계정 이름 매핑
  3. 일대일 매핑(주체/발급자 매핑이라고도 함)
  4. 다대일 매핑

레지스트리 경로: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

항목 이름 DWORD 기본값으로 사용 설정됨
Subject/Issuer 0x000000001 아니요
Issuer 0x000000002 아니요
UPN 0x000000004 아니요
S4U2Self 0x000000008
S4U2 자체 명시적 0x000000010

적용 가능한 버전: 이 문서의 시작 부분에 있는 적용 대상 목록에 지정된 대로.

Ciphers

TLS/SSL 암호화는 암호 그룹 순서를 구성하여 제어해야 합니다. 자세한 내용은 TLS 암호 그룹 순서 구성을 참조 하세요.

SChannel SSP에서 사용하는 기본 암호 그룹 주문에 대한 자세한 내용은 TLS/SSL(SChannel SSP)의 암호 그룹을 참조하세요.

CipherSuites

그룹 정책, MDM 또는 PowerShell을 사용하여 TLS/SSL 암호 그룹을 구성해야 합니다. 자세한 내용은 TLS 암호 그룹 순서 구성을 참조하세요.

SChannel SSP에서 사용하는 기본 암호 그룹 주문에 대한 자세한 내용은 TLS/SSL(SChannel SSP)의 암호 그룹을 참조하세요.

ClientCacheTime

이 항목은 클라이언트 TLS 세션 캐시 항목 수명(밀리초)을 지정합니다. Windows Server 2008 및 Windows Vista부터 기본값은 10시간입니다. 값 이 0 이면 클라이언트에서 TLS 세션 캐싱이 해제됩니다.

클라이언트가 SChannel SSP를 통해 서버에 처음 연결할 때 전체 TLS/SSL 핸드셰이크가 수행됩니다. 완료되면 마스터 보안, 암호 그룹 및 인증서가 해당 클라이언트와 서버의 세션 캐시에 저장됩니다.

레지스트리 경로: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

EnableOcspStaplingForSni

OCSP(온라인 인증서 상태 프로토콜) 스테이플링을 사용하면 IIS(인터넷 정보 서비스)와 같은 웹 서버가 TLS 핸드셰이크 중에 서버 인증서를 클라이언트로 보낼 때 서버 인증서의 현재 해지 상태 제공할 수 있습니다. 이 기능은 웹 서버가 서버 인증서의 현재 OCSP 상태 캐시하고 여러 웹 클라이언트에 보낼 수 있기 때문에 OCSP 서버의 부하를 줄입니다. 이 기능이 없으면 각 웹 클라이언트는 OCSP 서버에서 서버 인증서의 현재 OCSP 상태 검색하려고 합니다. 이렇게 하면 해당 OCSP 서버에서 높은 부하가 생성됩니다.

IIS 외에도 http.sys를 통한 웹 서비스는 AD FS(Active Directory Federation Services) 및 WAP(웹 애플리케이션 프록시)를 포함하여 이 설정을 활용할 수 있습니다.

기본적으로 OCSP 지원은 간단한 보안(SSL/TLS) 바인딩이 있는 IIS 웹 사이트에 대해 사용하도록 설정됩니다. 그러나 IIS 웹 사이트에서 다음 유형의 SSL/TLS 바인딩 중 하나 또는 둘 다를 사용하는 경우 이 지원은 기본적으로 사용하도록 설정되지 않습니다.

  • 서버 이름 표시 필요
  • 중앙 인증서 저장소 사용

이 경우 TLS 핸드셰이크 중 서버 hello 응답에는 기본적으로 스테이플 상태 OCSP가 포함되지 않습니다. 이 동작은 성능을 향상시킵니다. Windows OCSP 스테이플링 구현은 수백 개의 서버 인증서로 확장됩니다. 그러나 SNI(서버 이름 표시) 및 CCS(중앙 인증서 저장소)를 사용하면 IIS를 수천 개의 서버 인증서가 있는 수천 개의 웹 사이트로 확장할 수 있으므로 CCS 바인딩에 OCSP 스테이플링을 사용하도록 설정하면 성능 문제가 발생할 수 있습니다.

적용 가능한 버전: Windows Server 2012 및 Windows 8부터 시작하는 모든 버전입니다.

레지스트리 경로: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

다음 키를 추가합니다.

"EnableOcspStaplingForSni"=dword:00000001

사용하지 않도록 설정하려면 DWORD 값을 0으로 설정합니다.

"EnableOcspStaplingForSni"=dword:00000000

참고 항목

이 레지스트리 키를 사용하도록 설정하면 성능에 영향을 미칠 수 있습니다.

해시

TLS/SSL 해시 알고리즘은 암호 그룹 순서를 구성하여 제어해야 합니다. 자세한 내용은 TLS 암호 그룹 순서 구성을 참조하세요.

IssuerCacheSize

이 항목은 발급자 캐시의 크기를 제어하며 발급자 매핑과 함께 사용됩니다. SChannel SSP는 클라이언트 인증서의 직접 발급자뿐만 아니라 클라이언트의 인증서 체인에 있는 모든 발급자를 매핑하려고 시도합니다. 일반적인 경우인 계정에 발급자가 매핑되지 않는 경우 서버는 동일한 발급자 이름을 초당 수백 번 반복적으로 매핑하려고 시도할 수 있습니다.

이를 방지하기 위해 서버에는 음수 캐시가 있으므로 발급자 이름이 계정에 매핑되지 않으면 캐시에 추가되고 SChannel SSP는 캐시 항목이 만료될 때까지 발급자 이름을 다시 매핑하려고 시도하지 않습니다. 이 레지스트리 항목은 캐시 크기를 지정합니다. 이 항목은 기본적으로 레지스트리에 없습니다 . 기본값은 100입니다.

적용 가능한 버전: Windows Server 2008 및 Windows Vista부터 시작하는 모든 버전.

레지스트리 경로: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

IssuerCacheTime

이 항목은 캐시 시간 제한 간격의 길이를 밀리초 단위로 제어합니다. SChannel SSP는 클라이언트 인증서의 직접 발급자뿐만 아니라 클라이언트의 인증서 체인에 있는 모든 발급자를 매핑하려고 시도합니다. 일반적인 경우인 발급자가 계정에 매핑되지 않는 경우 서버는 동일한 발급자 이름을 초당 수백 번 반복적으로 매핑하려고 할 수 있습니다.

이를 방지하기 위해 서버에는 음수 캐시가 있으므로 발급자 이름이 계정에 매핑되지 않으면 캐시에 추가되고 SChannel SSP는 캐시 항목이 만료될 때까지 발급자 이름을 다시 매핑하려고 시도하지 않습니다. 이 캐시는 성능상의 이유로 유지되므로 시스템에서 동일한 발급자를 매핑하려고 계속 시도하지 않습니다. 이 항목은 기본적으로 레지스트리에 존재하지 않습니다. 기본값은 10분입니다.

적용 가능한 버전: Windows Server 2008 및 Windows Vista부터 시작하는 모든 버전.

레지스트리 경로: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

KeyExchangeAlgorithm 키 크기

아래에 나열된 이러한 항목은 기본적으로 레지스트리에 없을 수 있으며 수동으로 만들어야 합니다. 키 교환 알고리즘의 사용은 암호 그룹 순서를 구성하여 제어해야 합니다.

Windows 10 버전 1507 및 Windows Server 2016에 추가되었습니다.

레지스트리 경로: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\KeyExchangeAlgorithms\Diffie-Hellman

TLS 클라이언트에 대해 지원되는 최소 Diffie-Hellman 키 비트 길이 범위를 지정하려면 ClientMinKeyBitLength 항목을 만듭니다. 항목을 만든 후 DWORD 값을 원하는 비트 길이로 변경합니다. 구성되지 않은 경우 최소 1024비트가 됩니다.

TLS 클라이언트에 대해 지원되는 최대 Diffie-Hellman 키 비트 길이 범위를 지정하려면 ClientMaxKeyBitLength 항목을 만듭니다. 항목을 만든 후 DWORD 값을 원하는 비트 길이로 변경합니다.

TLS 서버 기본값에 대한 Diffie-Hellman 키 비트 길이를 지정하려면 ServerMinKeyBitLength 항목을 만듭니다. 항목을 만든 후 DWORD 값을 원하는 비트 길이로 변경합니다. 구성되지 않은 경우 2048비트가 기본값입니다.

참고 항목

구성된 타원 곡선은 ECDHE 키 교환의 암호화 강도를 결정합니다. 자세한 내용은 TLS(전송 계층 보안) 관리를 참조하세요.

TLS/SSL 암호 그룹 암호화 알고리즘에 대한 자세한 내용은 다음을 참조하세요.

MaximumCacheSize

이 항목은 캐시할 최대 TLS 세션 수를 제어합니다. MaximumCacheSize를 0으로 설정하면 서버 쪽 세션 캐시를 사용하지 않도록 설정하여 세션 재개를 방지합니다. MaximumCacheSize를 기본값보다 높게 늘리면 Lsass.exe가 추가 메모리를 사용합니다. 각 세션 캐시 요소에는 일반적으로 2KB에서 4KB의 메모리가 필요합니다. 이 항목은 기본적으로 레지스트리에 존재하지 않습니다. 기본값은 20,000개 요소입니다.

적용 가능한 버전: Windows Server 2008 및 Windows Vista부터 시작하는 모든 버전.

레지스트리 경로: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

메시징 – 조각 구문 분석

이 항목은 허용되는 TLS 핸드셰이크 메시지의 최대 허용 크기를 제어합니다. 허용되는 크기보다 큰 메시지는 허용되지 않으며 TLS 핸드셰이크는 실패합니다. 이러한 항목은 기본적으로 레지스트리에 존재하지 않습니다.

값을 0x0 설정하면 조각화된 메시지가 처리되지 않으며 TLS 핸드셰이크가 실패합니다. 따라서 현재 컴퓨터의 TLS 클라이언트 또는 서버가 TLS RFC와 호환되지 않습니다.

허용되는 최대 크기는 최대 2^16바이트까지 늘릴 수 있습니다. 클라이언트 또는 서버가 네트워크에서 확인되지 않은 대량의 데이터를 읽고 저장할 수 있도록 허용하는 것은 좋은 생각이 아니며 각 보안 컨텍스트에 대해 추가 메모리를 사용합니다.

Windows 7 및 Windows Server 2008 R2에 추가됨: Windows XP, Windows Vista 또는 Windows Server 2008에서 Internet Explorer가 조각화된 TLS/SSL 핸드셰이크 메시지를 구문 분석할 수 있도록 하는 업데이트를 사용할 수 있습니다.

레지스트리 경로: HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Messaging

TLS 클라이언트가 수락할 조각화된 TLS 핸드셰이크 메시지의 최대 허용 크기를 지정하려면 MessageLimitClient 항목을 만듭니다. 항목을 만든 후 DWORD 값을 원하는 비트 길이로 변경합니다. 구성되지 않은 경우 기본값은 0x8000 바이트입니다.

클라이언트 인증이 없을 때 TLS 서버에서 수락할 조각화된 TLS 핸드셰이크 메시지의 최대 허용 크기를 지정하려면 MessageLimitServer 항목을 만듭니다. 항목을 만든 후 DWORD 값을 원하는 비트 길이로 변경합니다. 구성되지 않은 경우 기본값은 0x4000 바이트입니다.

클라이언트 인증이 있을 때 TLS 서버에서 수락할 조각화된 TLS 핸드셰이크 메시지의 최대 허용 크기를 지정하려면 MessageLimitServerClientAuth 항목을 만듭니다. 항목을 만든 후 DWORD 값을 원하는 비트 길이로 변경합니다. 구성되지 않은 경우 기본값은 0x8000 바이트입니다.

SendTrustedIssuerList

TLS 서버는 클라이언트 인증을 요청할 때 허용 가능한 인증 기관의 고유 이름 목록을 보낼 수 있습니다. 이는 TLS 클라이언트가 적절한 TLS 클라이언트 인증서를 선택하는 데 도움이 될 수 있습니다. SChannel 기반 TLS 서버는 서버에서 신뢰하는 인증 기관을 수동 관찰자에게 노출하고 TLS 핸드셰이크 과정에서 교환되는 데이터의 양을 늘리기 때문에 기본적으로 이 신뢰할 수 있는 발급자 목록을 보내지 않습니다. 이 값을 1설정하면 SChannel 기반 서버가 신뢰할 수 있는 발급자 목록을 보냅니다.

신뢰할 수 있는 발급자 목록을 보내지 않으면 클라이언트 인증서를 요청할 때 클라이언트가 보내는 내용에 영향을 미칠 수 있습니다. 예를 들어 Internet Explorer는 클라이언트 인증 요청을 받을 경우 서버에서 보낸 인증 기관 중 하나로 연결되는 클라이언트 인증서만 표시합니다. 서버에서 목록을 보내지 않은 경우 Internet Explorer는 클라이언트에 설치된 모든 클라이언트 인증서를 표시합니다.

이 동작은 바람직할 수도 있습니다. 예를 들어 PKI 환경에 교차 인증서가 포함된 경우 클라이언트 및 서버 인증서에는 동일한 루트 CA가 없습니다. 따라서 Internet Explorer는 서버의 CA 중 하나까지 연결된 인증서를 선택할 수 없습니다. 서버가 신뢰할 수 있는 발급자 목록을 보내지 않는 경우 TLS 클라이언트는 사용 가능한 모든 클라이언트 인증서를 제공할 수 있습니다. 이 항목은 기본적으로 레지스트리에 존재하지 않습니다.

기본 신뢰할 수 있는 발급자 목록 보내기 동작

Windows 버전 기본 동작
Windows Server 2012, Windows 8 이상 FALSE
Windows Server 2008 R2, Windows 7 및 이전 버전 TRUE

적용 가능한 버전: Windows Server 2008 및 Windows Vista부터 시작하는 모든 버전.

레지스트리 경로: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

ServerCacheTime

이 항목은 서버 TLS 세션 캐시 항목 수명(밀리초)을 지정합니다. 기본값은 10시간입니다. 값 0 은 서버에서 TLS 세션 캐싱을 해제하고 세션 재개를 방지합니다. ServerCacheTime을 기본값보다 높게 늘리면 Lsass.exe가 추가 메모리를 사용합니다. 각 세션 캐시 요소에는 일반적으로 2KB에서 4KB의 메모리가 필요합니다. 이 항목은 기본적으로 레지스트리에 존재하지 않습니다.

적용 가능한 버전: Windows Server 2008 및 Windows Vista부터 시작하는 모든 버전.

레지스트리 경로: HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL

기본 서버 캐시 시간: 10시간

TLS, DTLS 및 SSL 프로토콜 버전 설정

SChannel SSP는 TLS, DTLS 및 SSL 프로토콜 버전을 구현합니다. 다른 Windows 릴리스는 서로 다른 프로토콜 버전을 지원합니다. AcquireCredentialsHandle 호출에서 SCH_CREDENTIALS 구조를 지정하는 SSPI 호출자가 시스템 전체에서 사용할 수 있는 (D)TLS 및 SSL 버전 집합을 제한할 수 있습니다(확장되지 않음). SSPI 호출자는 프로토콜 버전 제한을 적용하는 대신 시스템 기본값을 사용하는 것이 좋습니다.

지원되는 (D)TLS 또는 SSL 프로토콜 버전은 다음 상태 중 하나에 있을 수 있습니다.

  • 사용: SSPI 호출자가 SCH_CREDENTIALS 구조를 사용하여 이 프로토콜 버전을 명시적으로 사용하지 않도록 설정하지 않는 한 SChannel SSP는 지원 피어와 이 프로토콜 버전을 협상할 수 있습니다.
  • 사용 안 함: SChannel SSP는 SSPI 호출자가 지정할 수 있는 설정에 관계없이 이 프로토콜 버전을 협상하지 않습니다.

이러한 레지스트리 값은 다음 형식을 사용하여 명명된 레지스트리 하위 키에서 프로토콜 클라이언트 및 서버 역할에 대해 별도로 구성됩니다.

<SSL/TLS/DTLS><주 버전 번호>입니다.<부 버전 번호><Client\Server>

이러한 버전별 하위 키는 다음 레지스트리 경로에서 만들 수 있습니다.

HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

예를 들어 버전별 하위 키가 있는 몇 가지 유효한 레지스트리 경로는 다음과 같습니다.

  • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client

  • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server

  • HKLM SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\DTLS 1.2\Client

시스템 기본값을 재정의하고 지원되는(D)TLS 또는 SSL 프로토콜 버전을 사용 상태로 설정하려면 해당 버전별 하위 키 아래에 항목 값이 "1"인 "Enabled"라는 DWORD 레지스트리 값을 만듭니다.

다음 예제에서는 TLS 1.0 클라이언트가 사용 됨 상태로 설정된 것을 보여 줍니다.

Screenshot of Set TLS 1.0 client-side to enabled in Windows Server registry setting.

시스템 기본값을 재정의하고 지원되는 (D)TLS 또는 SSL 프로토콜 버전을 사용 안 함 상태로 설정하려면 해당 버전별 하위 키에서 "Enabled"의 DWORD 레지스트리 값을 "0"으로 변경합니다.

다음 예제에서는 레지스트리에서 사용하지 않도록 설정된 DTLS 1.2를 보여줍니다.

Screenshot of Windows Server registry setting for DTLS 1.2 set to disabled by default.

(D)TLS 또는 SSL 프로토콜 버전을 사용 안 함 상태로 전환하면 시스템 전체에서 사용하도록 설정된 프로토콜 버전이 부족하고 특정 SSPI 호출자가 허용하는 동시에 AcquireCredentialsHandle 호출이 실패할 수 있습니다. 또한 사용(D)TLS 및 SSL 버전 집합을 줄이면 원격 피어와의 상호 운용성이 손상될 수 있습니다.

(D)TLS 또는 SSL 프로토콜 버전 설정이 수정되면 후속 AcquireCredentialsHandle 호출에서 연 자격 증명 핸들을 사용하여 설정된 연결에 적용됩니다. (D) TLS 및 SSL 클라이언트 및 서버 애플리케이션 및 서비스는 성능상의 이유로 여러 연결에 자격 증명 핸들을 다시 사용하는 경향이 있습니다. 이러한 애플리케이션이 자격 증명 핸들을 다시 가져오려면 애플리케이션 또는 서비스를 다시 시작해야 할 수 있습니다.

이러한 레지스트리 설정은 SChannel SSP에만 적용되며 시스템에 설치될 수 있는 타사(D)TLS 및 SSL 구현에는 영향을 주지 않습니다.