23.2. TLS 계획 및 구현


TLS(Transport Layer Security)는 네트워크 통신을 보호하는 데 사용되는 암호화 프로토콜입니다. 기본 키 교환 프로토콜, 인증 방법 및 암호화 알고리즘을 구성하여 시스템 보안 설정을 강화할 때 지원되는 클라이언트 범위를 넓혀 보안을 강화해야 합니다. 반대로 엄격한 보안 설정은 클라이언트와의 호환성이 제한되어 일부 사용자가 시스템에서 잠길 수 있습니다. 가장 엄격한 사용 가능한 구성을 대상으로 하고 호환성을 위해 필요한 경우에만 완화해야 합니다.

23.2.1. SSL 및 TLS 프로토콜

SSL(Secure Sockets Layer) 프로토콜은 원래 Netscape Corporation에서 인터넷을 통한 보안 통신을 위한 메커니즘을 제공하기 위해 개발되었습니다. 그 후 이 프로토콜은 IETF(Internet Engineering Task Force)에서 채택했으며 TLS(Transport Layer Security)로 이름이 변경되었습니다.

TLS 프로토콜은 애플리케이션 프로토콜 계층과 TCP/IP와 같은 신뢰할 수 있는 전송 계층 사이에 있습니다. 애플리케이션 프로토콜과 독립적이므로 다음과 같이 다양한 프로토콜 아래에 계층화할 수 있습니다. HTTP, FTP, SMTP 등.

Expand
프로토콜 버전사용 권장 사항

SSL v2

사용하지 마십시오. 심각한 보안 취약점이 있습니다. RHEL 7 이후 코어 암호화 라이브러리에서 제거되었습니다.

SSL v3

사용하지 마십시오. 심각한 보안 취약점이 있습니다. RHEL 8 이후 코어 암호화 라이브러리에서 제거되었습니다.

TLS 1.0

사용하지 않는 것이 좋습니다. 상호 운용성을 보장하고 최신 암호화 제품군을 지원하지 않는 방식으로 완화할 수 없는 문제가 있습니다. RHEL 8에서는 LEGACY 시스템 전체 암호화 정책 프로필에서만 활성화됩니다.

TLS 1.1

필요한 경우 상호 운용성을 목적으로 사용합니다. 최신 암호화 제품군을 지원하지 않습니다. RHEL 8에서는 LEGACY 정책에서만 활성화됩니다.

TLS 1.2

최신 AEAD 암호화 제품군을 지원합니다. 이 버전은 모든 시스템 전체 암호화 정책에서 활성화되지만, 이 프로토콜의 선택적 부분에는 취약점이 포함되어 있으며 TLS 1.2에서는 오래된 알고리즘도 허용합니다.

TLS 1.3

권장 버전입니다. TLS 1.3은 문제가 있는 알려진 옵션을 제거하고, 협상 핸드셰이크를 더 많이 암호화하여 추가적인 프라이버시를 제공하며 보다 효율적인 최신 암호화 알고리즘을 사용하여 더 빠르게 사용될 수 있습니다. TLS 1.3은 모든 시스템 전체 암호화 정책에서도 활성화됩니다.

23.2.2. RHEL 8에서 TLS의 보안 고려 사항

RHEL 8에서는 시스템 전체 암호화 정책으로 인해 암호화 관련 고려 사항이 크게 단순화됩니다. DEFAULT 암호화 정책은 TLS 1.2 및 1.3만 허용합니다. 시스템이 이전 버전의 TLS를 사용하여 연결을 협상할 수 있도록 하려면 애플리케이션의 다음 암호화 정책을 비활성화하거나 update-crypto-policies 명령을 사용하여 LEGACY 정책으로 전환해야 합니다. 자세한 내용은 시스템 전체 암호화 정책 사용을 참조하십시오.

RHEL 8에 포함된 라이브러리에서 제공하는 기본 설정은 대부분의 배포에 충분히 안전합니다. TLS 구현에서는 가능한 경우 또는 기존 클라이언트 또는 서버의 연결을 방지할 수 없는 보안 알고리즘을 사용합니다. 보안 알고리즘 또는 프로토콜을 지원하지 않는 레거시 클라이언트나 서버가 연결되지 않거나 연결할 수 없는 엄격한 보안 요구 사항을 충족하는 환경에서 강화된 설정을 적용합니다.

TLS 구성을 강화하는 가장 간단한 방법은 update-crypto-policies --set FUTURE 명령을 사용하여 시스템 전체 암호화 정책 수준을 FUTURE로 전환하는 것입니다.

주의

LEGACY 암호화 정책에 대해 비활성화된 알고리즘은 Red Hat의 RHEL 8 보안 비전을 준수하지 않으며 보안 속성을 신뢰할 수 없습니다. 다시 활성화하는 대신 이러한 알고리즘 사용에서 벗어나는 것이 좋습니다. 예를 들어 이전 하드웨어와의 상호 운용성을 위해 다시 활성화하기로 결정한 경우, 이를 안전하지 않은 것으로 처리하고 네트워크 상호 작용을 별도의 네트워크 세그먼트에 격리하는 등의 추가 보호 조치를 적용합니다. 공용 네트워크에서 사용하지 마십시오.

RHEL 시스템 전체 암호화 정책을 따르거나 설정에 맞는 사용자 지정 암호화 정책을 생성하기로 결정한 경우 사용자 정의 구성에서 선호하는 프로토콜, 암호화 제품군 및 키 길이에 다음 권장 사항을 사용하십시오.

23.2.2.1. 프로토콜

최신 버전의 TLS는 최상의 보안 메커니즘을 제공합니다. 이전 버전의 TLS에 대한 지원을 포함할 수 있는 강력한 이유가 없는 경우 시스템에서 최소 TLS 버전 1.2를 사용하여 연결을 협상할 수 있습니다.

RHEL 8에서는 TLS 버전 1.3을 지원하지만 이 프로토콜의 일부 기능은 RHEL 8 구성 요소에서 완전히 지원되지는 않습니다. 예를 들어 연결 대기 시간을 줄이는 0-RTT(round Trip Time) 기능은 Apache 웹 서버에서 아직 완전히 지원하지 않습니다.

23.2.2.2. 암호화 제품군

최신 보안 암호화 제품군은 안전하지 않은 이전 암호화 제품군을 선호해야 합니다. 항상 암호화 또는 인증을 전혀 제공하지 않는 eNULL 및 aNULL 암호화 제품군 사용을 비활성화합니다. 가능한 경우 심각한 단점이 있는 RC4 또는 HMAC-MD5를 기반으로 하는 암호 제품군도 비활성화해야 합니다. 즉, 의도적으로 약해졌던 수출 암호 모음에도 동일하게 적용됩니다. 따라서 쉽게 중단할 수 있습니다.

즉시 안전하지 않지만 128비트 미만의 보안을 제공하는 암호화 제품군은 짧은 유효 기간 동안 고려해서는 안 됩니다. 128비트의 보안을 사용하는 알고리즘은 적어도 몇 년 동안 중단되지 않을 수 있으므로 강력하게 권장합니다. 3DES 암호화는 168비트 사용을 알리지만 실제로 112비트의 보안을 제공합니다.

항상 서버 키가 손상된 경우에도 암호화된 데이터의 기밀성을 보장하는 PFS(forward secrecy)를 지원하는 암호화 제품군을 선호합니다. 이 규칙은 빠른 RSA 키 교환을 제한하지만 ECDHE 및 DHE를 사용할 수 있습니다. 이 둘 중 ECDHE는 더 빠르고 선호되는 선택입니다.

또한 Oracle 공격에 취약하지 않으므로 CBC-GCM 이상의 AEAD 암호를 선호해야 합니다. 또한 대부분의 경우 AES-GCM은 특히 하드웨어에 AES용 암호화 가속기가 있는 경우 CBC 모드에서 AES보다 빠릅니다.

또한 ECDSA 인증서와 함께 ECDSA 키 교환을 사용할 때는 트랜잭션이 순수 RSA 키 교환보다 훨씬 빠릅니다. 레거시 클라이언트를 지원하기 위해 서버에 두 쌍의 인증서와 키(새 클라이언트용)와 RSA 키가 있는 키(기존 클라이언트의 경우)를 설치할 수 있습니다.

23.2.2.3. 공개 키 길이

RSA 키를 사용하는 경우 항상 최소 SHA-256에서 서명한 3072비트 이상의 키 길이를 선호하며, 이는 실제 128비트의 보안을 위해 충분히 큽니다.

주의

시스템의 보안은 체인에서 가장 약한 링크만큼 강력합니다. 예를 들어 강력한 암호만으로는 좋은 보안이 보장되지 않습니다. 키와 인증서는 키에 서명하는 데 CA(인증 기관)에서 사용하는 해시 기능 및 키뿐만 아니라 중요합니다.

23.2.3. 애플리케이션에서 TLS 구성 강화

RHEL에서 시스템 전체 암호화 정책은 암호화 라이브러리를 사용하는 애플리케이션에서 알려진 비보안 프로토콜, 암호 또는 알고리즘을 허용하지 않도록 하는 편리한 방법을 제공합니다.

사용자 지정 암호화 설정으로 TLS 관련 구성을 강화하려면 이 섹션에 설명된 암호화 구성 옵션을 사용하고 필요한 최소 용량의 시스템 전체 암호화 정책을 재정의할 수 있습니다.

사용하도록 선택한 구성과 관계없이 항상 서버 애플리케이션에서 서버 측 암호 순서를 적용하여 사용할 암호화 모음을 구성하는 순서에 따라 결정되도록 합니다.

23.2.3.1. TLS를 사용하도록 Apache HTTP 서버 구성

Apache HTTP Server는 TLS 요구 사항에 따라 OpenSSLNSS 라이브러리를 모두 사용할 수 있습니다. RHEL 8에서는 잘못된 패키지를 통해 mod_ssl 기능을 제공합니다.

# yum install mod_ssl
Copy to Clipboard Toggle word wrap

mod_ssl 패키지는 Apache HTTP Server의 TLS 관련 설정을 수정하는 데 사용할 수 있는 /etc/httpd/conf.d/ssl.conf 구성 파일을 설치합니다.

httpd-manual 패키지를 설치하여 TLS 구성을 포함하여 Apache HTTP Server 에 대한 전체 문서를 가져옵니다. /etc/httpd/conf.d/ssl.conf 구성 파일에서 사용 가능한 지시문은 /usr/share/httpd/manual/mod/mod_ssl.html 파일에 자세히 설명되어 있습니다. 다양한 설정의 예는 /usr/share/httpd/manual/ssl/ssl_howto.html 파일에 설명되어 있습니다.

/etc/httpd/conf.d/ssl.conf 구성 파일의 설정을 수정할 때 최소한 다음 세 가지 지시문을 고려해야 합니다.

SSLProtocol
이 지시문을 사용하여 허용하려는 TLS 또는 SSL 버전을 지정합니다.
SSLCipherSuite
이 지시문을 사용하여 선호하는 암호화 제품군을 지정하거나 허용하지 않을 암호화 제품군을 비활성화합니다.
SSLHonorCipherOrder
연결 클라이언트가 지정한 암호 순서를 준수하는지 확인하기 위해 이 지시문의 주석을 on 으로 설정합니다.

예를 들어 TLS 1.2 및 1.3 프로토콜만 사용하려면 다음을 수행합니다.

SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
Copy to Clipboard Toggle word wrap

자세한 내용은 다양한 유형의 서버 배포 문서의 Apache HTTP Server에서 TLS 암호화 구성 장을 참조하십시오.

23.2.3.2. TLS를 사용하도록 Nginx HTTP 및 프록시 서버 구성

Nginx 에서 TLS 1.3 지원을 활성화하려면 /etc/nginx/nginx.conf 구성 파일의 server 섹션에 있는 ssl_protocols 옵션에 TLSv1.3 값을 추가합니다.

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    ....
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers
    ....
}
Copy to Clipboard Toggle word wrap

자세한 내용은 다양한 유형의 서버 배포 문서의 Nginx 웹 서버에 TLS 암호화 추가 장을 참조하십시오.

23.2.3.3. TLS를 사용하도록 Dovecot 메일 서버 구성

TLS를 사용하도록 Dovecot 메일 서버의 설치를 구성하려면 /etc/dovecot/conf.d/10-ssl.conf 구성 파일을 수정합니다. 해당 파일에서 사용할 수 있는 기본 구성 지시문 중 일부에 대한 설명은 Dovecot 의 표준 설치와 함께 설치된 /usr/share/doc/dovecot/whaproxy/SSL.DovecotConfiguration.txt 파일에서 찾을 수 있습니다.

/etc/dovecot/conf.d/10-ssl.conf 구성 파일의 설정을 수정할 때 다음 세 지시문을 최소한으로 고려해야 합니다.

ssl_protocols
이 지시문을 사용하여 허용 또는 비활성화하려는 TLS 또는 SSL 버전을 지정합니다.
ssl_cipher_list
이 지시문을 사용하여 선호하는 암호화 제품군을 지정하거나 허용하지 않을 암호화 제품군을 비활성화합니다.
ssl_prefer_server_ciphers
연결 클라이언트가 지정한 암호 순서를 준수하는지 확인하기 위해 이 지시문의 주석을 제거하고 yes 로 설정합니다.

예를 들어 /etc/dovecot/conf.d/10-ssl.conf 의 다음 행에서는 TLS 1.1 이상만 허용합니다.

ssl_protocols = !SSLv2 !SSLv3 !TLSv1
Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat