다음을 통해 공유


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

이 문서에서는 SChannel SSP(Security Support Provider)를 통한 TLS(전송 계층 보안) 프로토콜 및 SSL(Secure Sockets Layer) 프로토콜의 Windows 구현에 대해 지원되는 레지스트리 설정 정보가 포함되어 있습니다. 이 문서에서 다룬 레지스트리 하위 키와 항목은 Schannel SSP, 특히 TLS 및 SSL 프로토콜을 관리하고 문제를 해결하는 데 도움이 됩니다.

주의

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

SChannel 로깅

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

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

참고 항목

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

CertificateMappingMethods

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

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

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

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

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

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

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

항목 이름 DWORD 기본적으로 사용하도록 설정됨
주체/발급자 0x000000001 아니요
발급자 0x000000002 아니요
UPN 0x000000004 아니요
S4U2Self 0x000000008
S4U2Self 명시적 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 외에도 AD FS(Active Directory Federation Services) 및 WAP(웹 애플리케이션 프록시)를 포함하여 http.sys 이상의 웹 서비스에서 이 설정을 활용할 수 있습니다.

기본적으로 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 키 크기

이러한 다음 항목은 기본적으로 레지스트리에 없을 수 있으며 수동으로 만들어야 합니다. 키 교환 알고리즘의 사용은 암호화 그룹 순서를 구성하여 제어해야 합니다. TLS/SSL 암호 그룹 암호화 알고리즘에 대한 자세한 내용은 TLS/SSL(SChannel SSP)의 암호화 그룹을 참조하세요.

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

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

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

참고 항목

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

MaximumCacheSize

이 항목은 TLS 세션의 최대 캐시 수를 제어합니다. MaximumCacheSize를 0으로 설정하면 서버 측 세션 캐시가 사용되지 않고 세션 다시 시작이 방지됩니다. MaximumCacheSize를 기본값보다 높게 늘리면 Lsass.exe가 여분의 메모리를 사용합니다. 각각의 세션 캐시 요소에는 일반적으로 2-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 기반 서버가 신뢰할 수 있는 발급자 목록을 보냅니다.

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

이 동작은 바람직할 수도 있습니다. 예를 들어 PKI 환경에 교차 인증서가 포함된 경우 클라이언트 및 서버 인증서에 동일한 루트 CA가 없습니다. 따라서 Microsoft Edge는 서버의 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가 추가 메모리를 사용합니다. 각각의 세션 캐시 요소에는 2-4KB의 메모리가 일반적으로 필요합니다. 기본적으로 이 항목은 레지스트리에 없습니다.

해당 버전: Windows Server 2008 및 Windows Vista부터 시작하는 모든 버전입니다.

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

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

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

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

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

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

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

<SSL/TLS/DTLS> <major version number>.<minor version number><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 프로토콜 버전을 Enabled 상태로 설정하려면 DWORD 레지스트리 값을 만듭니다(이름은 Enabled이며 해당 버전별 하위 키 아래에 항목 값이 "1"임).

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

Windows Server 레지스트리 설정에서 사용하도록 설정할 TLS 1.0 클라이언트 측 설정의 스크린샷입니다.

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

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

기본적으로 사용하지 않도록 설정된 DTLS 1.2에 대한 Windows Server 레지스트리 설정의 스크린샷입니다.

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

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

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

Warning

이 문서에서 명시적으로 자세히 설명하지 않은 SChannel 레지스트리 설정을 만들거나 조정을 시도하는 것은 지원되지 않는 구성에서 발생할 수 있는 잠재적인 위험 및 의도하지 않은 결과로 인해 권장되지 않습니다.

PowerShell을 사용하여 TLS 암호 그룹을 관리하는 방법에 대한 자세한 내용은 TLS 명령 참조를 참조하세요. 그룹 정책을 통해 TLS 설정을 관리하는 데 관심이 있는 경우 그룹 정책을 사용하여 TLS 암호화 그룹 순서 구성을 참조하세요.