다음을 통해 공유


TLS 구성 모범 사례 Exchange Server

이 설명서에서는 Microsoft Exchange Server 특정 TLS 버전을 올바르게 구성하는 데 필요한 단계를 간략하게 설명합니다. 또한 TLS에서 사용하는 암호 그룹 및 해시 알고리즘을 최적화하는 방법도 자세히 설명합니다. TLS 구성이 잘못되면 Microsoft 365 또는 특정 최소 TLS 표준이 필요한 다른 시스템과 상호 작용할 때 다양한 문제가 발생할 수 있습니다.

TLS 프로토콜에 대한 자세한 내용은 전송 계층 보안 프로토콜 설명서에서 찾을 수 있습니다.

Exchange HealthChecker 스크립트를 사용하여 Exchange 서버의 현재 TLS 구성을 검사 수 있습니다.

일부 단계는 특정 운영 체제 또는 Exchange Server 버전에서만 수행할 수 있으므로 주의 깊게 읽어보세요. 각 섹션은 설정이 지원되는지 여부와 특정 Exchange Server 버전에서 미리 구성된 경우와 특정 TLS 프로토콜 또는 기능을 사용하거나 사용하지 않도록 설정하는 단계를 보여 주는 행렬로 시작합니다.

TLS 버전을 사용하지 않도록 설정하기 전에 고려해야 할 사항

모든 애플리케이션이 사용하도록 설정된 TLS 버전을 지원하는지 확인하세요. 다음과 같은 고려 사항(이에 국한되지 않음):

  • 도메인 컨트롤러 및 글로벌 카탈로그 서버는 TLS 1.2 또는 TLS 1.3만 구성을 지원합니까?
  • 파트너 애플리케이션은 TLS 1.2 또는 TLS 1.3만 구성을 지원합니까?
  • 운영 체제(OS)가 WinHTTP를 통해 최신 TLS 프로토콜 버전 TLS 1.2를 지원합니까?
  • 부하 분산 장치가 사용되는 TLS 1.2 또는 TLS 1.3을 지원하나요?
  • 데스크톱, 모바일 및 브라우저 애플리케이션이 TLS 1.2 또는 TLS 1.3을 지원합니까?
  • 다기능 프린터와 같은 디바이스는 TLS 1.2 또는 TLS 1.3을 지원합니까?
  • Exchange Server 또는 Microsoft 356과 통합되는 타사 또는 사용자 지정 사내 애플리케이션이 강력한 TLS 구현을 지원합니까?

따라서 TLS 1.2 또는 TLS 1.3으로 전환하고 이전 보안 프로토콜에서 벗어나기 위해 수행하는 모든 단계는 프로덕션 환경에서 느리게 배포를 시작하기 전에 프로덕션 환경을 시뮬레이션하는 랩에서 먼저 수행되는 것이 좋습니다.

아래에 설명된 대로 특정 TLS 버전을 사용하지 않도록 설정하는 데 사용되는 단계는 다음 Exchange Server 기능에 적용됩니다.

  • SMTP(Simple Mail Transport Protocol)
  • Outlook 클라이언트 연결(Outlook Anywhere / MAPI/HTTP)
  • EAS(Exchange Active Sync)
  • OWA(Outlook on the Web)
  • EAC(Exchange 관리 Center) 및 ECP(Exchange 제어판)
  • 자동 검색
  • EWS(Exchange 웹 서비스)
  • REST(Exchange Server 2016/2019)
  • HTTPS를 통한 Exchange별 PowerShell 사용
  • POP 및 IMAP

필수 구성 요소

TLS 1.3 지원은 SMTP 프로토콜을 제외하고 Windows Server 2022 및 Windows Server 2025에 Exchange Server 2019 CU(누적 업데이트) 15와 함께 도입되었습니다. 이 프로토콜에 대한 지원은 향후 업데이트와 함께 추가될 예정입니다. TLS 1.2 지원은 Exchange Server 2013 CU19 및 Exchange Server 2016 CU8에서 도입되었습니다. Exchange Server 2019는 기본적으로 TLS 1.2를 지원합니다.

Exchange Server Windows Server 없이 실행할 수 없으므로 안정적이고 안전한 TLS 구현을 실행하려면 최신 운영 체제 업데이트를 설치해야 합니다.

또한 CU에서 지원하는 최신 버전의 .NET Framework 및 관련 패치가 있어야 합니다.

운영 체제에 따라 다음 업데이트도 설치되어 있는지 확인합니다(서버가 Windows 업데이트 현재 있는 경우 설치해야 함).

운영 체제가 Windows Server 2012 또는 R2를 Windows Server 2012 경우 TLS 1.2를 사용하도록 설정하기 전에 KB3161949 및 KB2973337 설치해야 합니다.

경고

Windows Server 2012Windows Server 2012 R2 추가 지원은 2023년 10월 10일에 종료되었습니다. 이러한 서버는 더 이상 ESU 없이 Windows 보안 업데이트 받지 않습니다. 가능한 한 빨리 지원되는 버전으로 마이그레이션하는 것이 좋습니다.

TLS 구성이 적용된 후 Exchange Server 다시 부팅해야 합니다. 서버를 다시 시작한 후 활성화됩니다.

Schannel에서 기본값을 상속하도록 .NET Framework 준비

다음 표에서는 기본 .NET Framework Schannel 상속 구성과 Exchange Server/Windows Server 조합을 보여 줍니다.

Exchange Server Windows Server 않음 기본적으로 구성됨
Exchange Server 2019 CU14 이상 모두 예(새 설치에만 해당)
Exchange Server 2019 CU13 이상 모두 부분적으로(SchUseStrongCrypto 수동으로 구성해야 함)
Exchange Server 2016 모두 아니요(OS 기본값 사용)
Exchange Server 2013 모두 아니요(OS 기본값 사용)

레지스트리 값은 SystemDefaultTlsVersions .NET Framework 4.x에서 사용되는 보안 프로토콜 버전 기본값을 정의합니다. 값이 로 설정된 1경우 .NET Framework 4.x는 Windows 보안 채널(Schannel) DisabledByDefault 레지스트리 값에서 기본값을 상속합니다. 값이 정의되지 않은 경우 값이 로 설정된 것처럼 동작합니다 0.

강력한 암호화(레지스트리 값으로 SchUseStrongCrypto 구성됨)는 보다 안전한 네트워크 프로토콜(TLS 1.3, TLS 1.2 및 TLS 1.1)을 사용하고 안전하지 않은 프로토콜을 차단합니다. SchUseStrongCrypto 는 애플리케이션의 클라이언트(나가는) 연결에만 영향을 줍니다. schannel에서 해당 값을 상속하도록 .NET Framework 4.x를 구성하면 TLS 1.2 및 TLS 1.3을 포함하여 OS에서 지원하는 최신 버전의 TLS를 사용할 수 있습니다.

.NET Framework 4.x Schannel 상속 사용

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 .NET Framework 4.x Schannel 상속을 구성합니다.

Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319" -Name "SchUseStrongCrypto" -Value 1 -Type DWord

.NET Framework 3.5 Schannel 상속 사용

Exchange Server 2013 이상에서는 이 설정이 필요하지 않습니다. 그러나 일관된 구성을 보장하려면 .NET 4.x 설정과 동일하게 구성하는 것이 좋습니다.

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 .NET Framework 3.5 Schannel 상속을 구성합니다.

Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SystemDefaultTlsVersions" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727" -Name "SchUseStrongCrypto" -Value 1 -Type DWord

TLS 1.3을 구성하는 단계

다음 표에서는 TLS 1.3이 지원되는 Exchange Server/Windows Server 조합을 보여 줍니다. 테이블에는 기본 구성도 표시됩니다.

Exchange Server Windows Server 않음 기본적으로 구성됨
Exchange Server 2019 CU15 Windows Server 2022/2025 예(enabled)
Exchange Server 2019 CU15 Windows Server 2019 아니요 해당 없음
Exchange Server 2019 CU14 이상 모두 아니요 해당 없음
Exchange Server 2016 모두 아니요 해당 없음
Exchange Server 2013 모두 아니요 해당 없음

TLS 1.3 사용

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 TLS 1.3을 사용하도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.3" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "Enabled" -Value 1 -Type DWord

RFC 8446 TLS 1.3에 따라 이전 버전의 TLS와 동일한 암호 그룹 공간을 사용합니다. 그러나 TLS 1.3 암호 그룹은 대칭 암호화만 지정하여 다르게 정의되며 TLS 1.2에는 사용할 수 없습니다. 마찬가지로 TLS 1.2 이하의 암호 그룹을 TLS 1.3과 함께 사용할 수 없습니다.

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 TLS 1.3 암호 그룹을 구성합니다.

Enable-TlsCipherSuite -Name TLS_AES_256_GCM_SHA384 -Position 0
Enable-TlsCipherSuite -Name TLS_AES_128_GCM_SHA256 -Position 1

TLS 1.3 사용 안 함

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 대해 TLS 1.3을 명시적으로 사용하지 않도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.3" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.3\Server" -Name "Enabled" -Value 0 -Type DWord

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 TLS 1.3 암호 그룹을 제거합니다.

Remove-TlsCipherSuite -Name TLS_AES_256_GCM_SHA384 -ErrorAction SilentlyContinue
Remove-TlsCipherSuite -Name TLS_AES_128_GCM_SHA256 -ErrorAction SilentlyContinue

TLS 1.2를 구성하는 단계

다음 표에서는 TLS 1.2가 지원되는 Exchange Server/Windows Server 조합을 보여 줍니다. 테이블에는 기본 구성도 표시됩니다.

Exchange Server Windows Server 않음 기본적으로 구성됨
Exchange Server 2019 모두 예(enabled)
Exchange Server 2016 모두 아니요
Exchange Server 2013 모두 아니요

TLS 1.2 사용

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 TLS 1.2를 사용하도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.2" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 1 -Type DWord

TLS 1.2 사용 안 함

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 대해 TLS 1.2를 명시적으로 사용하지 않도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.2" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name "Enabled" -Value 0 -Type DWord

TLS 1.1을 구성하는 단계

다음 표에서는 TLS 1.1이 지원되는 Exchange Server/Windows Server 조합을 보여 줍니다. 테이블에는 기본 구성도 표시됩니다.

Exchange Server Windows Server 않음 기본적으로 구성됨
Exchange Server 2019 모두 예(disabled)
Exchange Server 2016 모두 아니요
Exchange Server 2013 모두 아니요

TLS 1.1 사용

참고

Microsoft TLS 1.1 구현에는 알려진 보안 취약성이 없습니다. 그러나 향후 프로토콜 다운그레이드 공격 및 기타 TLS 취약성이 발생할 수 있으므로 TLS 1.1을 신중하게 계획하고 사용하지 않도록 설정하는 것이 좋습니다. 신중하게 계획하지 않으면 클라이언트의 연결이 끊어질 수 있습니다.

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 TLS 1.1을 사용하도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.1" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 1 -Type DWord

TLS 1.1 사용 안 함

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 대해 TLS 1.1을 명시적으로 사용하지 않도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.1" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server" -Name "Enabled" -Value 0 -Type DWord

TLS 1.0을 구성하는 단계

다음 표에서는 TLS 1.0이 지원되는 Exchange Server/Windows Server 조합을 보여 줍니다. 테이블에는 기본 구성도 표시됩니다.

Exchange Server Windows Server 지원 기본적으로 구성됨
Exchange Server 2019 모두 예(disabled)
Exchange Server 2016 모두 아니요
Exchange Server 2013 모두 아니요

TLS 1.0 사용

참고

Microsoft TLS 1.0 구현에 알려진 보안상 취약한 부분은 없습니다. 그러나 향후 프로토콜 다운그레이드 공격 및 기타 TLS 취약성이 발생할 가능성이 있으므로 TLS 1.0을 신중하게 계획하고 사용하지 않도록 설정하는 것이 좋습니다. 신중하게 계획하지 않으면 클라이언트의 연결이 끊어질 수 있습니다.

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 TLS 1.0을 사용하도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.0" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 1 -Type DWord

TLS 1.0 사용 안 함

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 클라이언트 및 서버 연결에 대해 TLS 1.0을 명시적으로 사용하지 않도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols" -Name "TLS 1.0" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Client" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0" -Name "Server" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "DisabledByDefault" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name "Enabled" -Value 0 -Type DWord

TLS 재협상 엄격한 모드를 구성하는 단계

TLS 엄격한 모드는 필요한 보안 업데이트가 있는 클라이언트만 서버와 TLS 세션을 설정하고 재협상할 수 있도록 하는 보안 기능입니다.

다음 표에서는 기본 TLS 재협상 엄격한 모드 구성과 Exchange Server/Windows Server 조합을 보여 줍니다.

Exchange Server Windows Server 않음 기본적으로 구성됨
Exchange Server 2019 모두 예(enabled)
Exchange Server 2016 모두 아니요
Exchange Server 2013 모두 아니요 해당 없음

TLS 재협상 엄격한 모드 사용

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 재협상 엄격한 모드를 사용하도록 설정합니다.

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoClients" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoServers" -Value 0 -Type DWord

TLS 재협상 엄격한 모드 사용 안 함

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 재협상 엄격한 모드를 명시적으로 사용하지 않도록 설정합니다.

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoClients" -Value 1 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "AllowInsecureRenegoServers" -Value 1 -Type DWord

TLS 1.2 또는 TLS 1.3 사용의 유효성 검사

TLS 1.2 또는 TLS 1.3을 사용하도록 설정하면 작업이 성공했는지 확인하고 시스템에서 인바운드(서버) 연결 및 아웃바운드(클라이언트) 연결에 대해 TLS 1.2 또는 TLS 1.3을 협상할 수 있는지 확인하는 것이 도움이 될 수 있습니다. TLS 사용의 유효성을 검사하는 데 사용할 수 있는 몇 가지 방법이 있으며, 그 중 일부는 다음 섹션에서 설명합니다.

Exchange Server 사용되는 많은 프로토콜은 HTTP 기반이므로 Exchange 서버에서 IIS 프로세스를 트래버스합니다. MAPI/HTTP, Outlook Anywhere, Exchange Web Services, Exchange ActiveSync, REST, OWA & EAC, 오프라인 주소록 다운로드 및 자동 검색은 Exchange Server 사용하는 HTTP 기반 프로토콜의 예입니다.

IIS 로깅

IIS(인터넷 정보 서비스) 팀은 R2 이상을 Windows Server 2012 암호화 프로토콜 버전 및 암호와 관련된 사용자 지정 필드를 기록하는 기능을 추가했습니다. 이러한 사용자 지정 필드를 사용하도록 설정하고 HTTP 기반 프로토콜과 관련된 환경의 들어오는 연결에 대한 정보를 위해 로그 구문 분석을 시작하는 방법에 대한 설명서는 블로그를 검토하는 것이 좋습니다.

이러한 IIS 사용자 지정 필드는 Windows Server 버전 이전 Windows Server 2012 R2에 대해 존재하지 않습니다. 부하 분산 장치 또는 방화벽 로그에서 이 정보를 제공할 수 있습니다. 해당 로그가 이 정보를 제공할 수 있는지 확인하려면 공급업체의 지침을 요청하세요.

Microsoft Edge 개발자 도구

Microsoft Edge에서 사용할 수 있는 를 활용하여 Developer ToolsOWA(Outlook on the Web) 또는 ECP(Exchange 관리 Center)에 연결할 때 보안 연결을 설정하는 데 사용된 TLS 버전을 검사 수 있습니다. 이렇게 하려면 다음과 같이 하십시오.

  1. Microsoft Edge 브라우저를 열고 OWA 또는 ECP에 대한 HTTPS 연결을 설정합니다.

  2. 를 눌러 CTRL + SHIFT + IDeveloper Tools엽니다.

  3. + 오른쪽 위 모서리에 있는 기호를 클릭합니다.

  4. Security 드롭다운 메뉴에서 를 클릭합니다.

  5. 섹션에서 TLS 버전을 확인합니다 Connection - secure connection settings .

메시지 헤더

Exchange Server 2016 이상의 메시지 헤더 데이터는 송수신 호스트가 메일을 교환할 때 협상되고 사용되는 프로토콜을 제공합니다. 메시지 헤더 분석기를 사용하여 각 홉에 대한 명확한 개요를 확인할 수 있습니다.

메시지 헤더 예제에는 알려진 예외가 있습니다. 클라이언트가 인증된 SMTP(SMTP 클라이언트 제출 프로토콜이라고도 함)를 사용하여 서버에 연결하여 메시지를 보내는 경우 메시지 헤더의 TLS 버전은 클라이언트에서 사용하는 올바른 TLS 버전을 표시하지 않습니다. Microsoft는 향후 업데이트에서 이 정보를 추가할 가능성을 조사하고 있습니다.

SMTP 로깅

Exchange Server SMTP 로그에는 두 시스템 간에 전자 메일을 교환하는 동안 사용되는 암호화 프로토콜 및 기타 암호화 관련 정보가 포함됩니다.

서버가 인 SMTP receiving system경우 사용된 TLS 버전에 따라 로그에서 를 검색 Server value 합니다. 서버가 인 SMTP sending system경우 사용된 TLS 버전에 따라 로그에서 을 검색 Client value 합니다.

TLS 버전 서버 값 클라이언트 값
TLS 1.0 SP_PROT_TLS1_0_SERVER SP_PROT-TLS1_0_CLIENT
TLS 1.1 SP_PROT_TLS1_1_SERVER SP_PROT-TLS1_1_CLIENT
TLS 1.2 SP_PROT_TLS1_2_SERVER SP_PROT-TLS1_2_CLIENT

참고

SMTP TLS 1.3에 대한 지원은 예정된 Exchange 2019 CU15 업데이트에 포함됩니다.

다음 예제에서는 사서함 역할을 실행하는 Exchange 서버의 로그 파일에서 TLS 1.0 프로토콜을 사용하여 만든 연결을 검색합니다.

Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName.Replace("Hub","FrontEnd")+"\*.log") "SP_PROT_TLS1_0"

TLS 1.1 프로토콜을 사용하여 만든 연결에 대해 Edge 전송 역할을 실행하는 Exchange 서버에서 로그 파일을 검색하는 예제:

Select-String -Path (((Get-TransportService -Identity $env:COMPUTERNAME).ReceiveProtocolLogPath).PathName+"\*.log") "SP_PROT_TLS1_1"

POP 및 IMAP

POP 및 IMAP 클라이언트에 사용되는 암호화 프로토콜 버전을 노출하는 로깅이 없습니다. 이 정보를 캡처하려면 서버에서 Netmon 추적을 캡처하거나 HTTPS 브리징이 수행되는 부하 분산 장치 또는 방화벽을 통해 흐르는 트래픽을 검사해야 할 수 있습니다.

암호 및 해시 알고리즘 모범 사례

이 섹션의 단계는 Exchange Server 2019와 동일한 암호화 및 해시 알고리즘 집합으로 Exchange Server 2016을 구성하는 데 사용할 수 있습니다. 이러한 단계는 이미 미리 구성된 암호 및 해시 알고리즘 설정과 함께 제공되므로 Exchange Server 2019에는 필요하지 않습니다.

필수 조건으로 먼저 TLS 1.2를 구성한 다음 TLS 1.0 및 TLS 1.1을 사용하지 않도록 설정해야 합니다. 문제가 있는 클라이언트의 구성 문제를 격리하기 위해 TLS 1.0 및 TLS 1.1을 사용하지 않도록 설정하는 것과 별도로 다음 설정을 적용하는 것이 좋습니다.

Windows Server 2012 R2 및 Windows Server 2012

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 권장되는 암호 그룹을 구성합니다.

New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Cryptography\Configuration\Local\SSL\00010002" -Name "Functions" -PropertyType MultiString -Value "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256" -Force

Windows Server 2016

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 권장되는 암호 그룹을 구성합니다.

참고

GPO(그룹 정책 개체)를 활용하여 암호 그룹을 구성할 수 있습니다. 이미 GPO를 통해 구성되었거나 Functions 레지스트리 항목이 경로 아래에 HKLM:\SOFTWARE\Policies\Microsoft\Cryptography\Configuration\SSL\00010002 이미 있는 경우 Enable-TlsCipherSuite 또는 Disable-TLSCipherSuite cmdlet을 사용하여 수동으로 구성할 수 없습니다.

먼저 모든 암호 그룹을 사용하지 않도록 설정합니다.

foreach ($suite in (Get-TLSCipherSuite).Name) {
    if (-not([string]::IsNullOrWhiteSpace($suite))) {
        Disable-TlsCipherSuite -Name $suite -ErrorAction SilentlyContinue
    }
}

다음으로 권장되는 TLS 1.2 암호 그룹만 다시 사용하도록 설정합니다.

$cipherSuites = @('TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384',
                'TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256',
                'TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384',
                'TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256',
                'TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384',
                'TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256',
                'TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384',
                'TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256')

$suiteCount = 0
foreach ($suite in $cipherSuites) {
    Enable-TlsCipherSuite -Name $suite -Position $suiteCount
    $suiteCount++
}

오래된 암호 및 해시 사용 안 함

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 오래된 암호 및 해시를 명시적으로 사용하지 않도록 설정합니다.

New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "Hashes" -ErrorAction SilentlyContinue
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL" -Name "Ciphers" -ErrorAction SilentlyContinue
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("DES 56/56")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("NULL")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 40/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 56/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC2 56/56")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 40/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 56/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 64/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("RC4 128/128")
(Get-Item HKLM:).OpenSubKey("SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers", $true).CreateSubKey("Triple DES 168")
New-Item -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes" -Name "MD5" -ErrorAction SilentlyContinue
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\DES 56/56" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\NULL" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 40/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC2 56/56" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 64/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\Triple DES 168" -Name "Enabled" -Value 0 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Hashes\MD5" -Name "Enabled" -Value 0 -Type DWord

줄임표 곡선 기본 설정 구성

FIPS 모드에서는 사용할 수 없으므로 줄임표 곡선을 사용하지 않도록 설정하는 curve25519 것이 좋습니다. 자세한 내용은 Windows 10 버전 1607 이상 설명서의 TLS 줄임표 곡선에서 찾을 수 있습니다.

관리자 권한 PowerShell 창에서 다음 명령을 실행하여 줄임표 곡선 기본 설정을 구성합니다.

Disable-TlsEccCurve -Name "curve25519"
Enable-TlsEccCurve -Name "NistP384" -Position 0
Enable-TlsEccCurve -Name "NistP256" -Position 1