1.9. Apache HTTP Server에서 TLS 암호화 구성
기본적으로 Apache는 암호화되지 않은 HTTP 연결을 사용하여 클라이언트에 콘텐츠를 제공합니다. 이 섹션에서는 TLS 암호화를 활성화하고 Apache HTTP Server에서 자주 사용하는 암호화 관련 설정을 구성하는 방법에 대해 설명합니다.
사전 요구 사항
- Apache HTTP Server가 설치되어 실행 중입니다.
1.9.1. Apache HTTP Server에 TLS 암호화 추가 링크 복사링크가 클립보드에 복사되었습니다!
example.com 도메인의 Apache HTTP Server에서 TLS 암호화를 활성화할 수 있습니다.
사전 요구 사항
- Apache HTTP Server가 설치되어 실행 중입니다.
개인 키는
/etc/pki/tls/private/example.com.key파일에 저장됩니다.개인 키 및 CSR(인증서 서명 요청) 생성 및 CA(인증 기관)에서 인증서를 요청하는 방법에 대한 자세한 내용은 CA 문서를 참조하십시오. 또는 CA에서 ACME 프로토콜을 지원하는 경우
mod_md모듈을 사용하여 TLS 인증서 검색 및 프로비저닝을 자동화할 수 있습니다.-
TLS 인증서는
/etc/pki/tls/certs/example.com.crt파일에 저장됩니다. 다른 경로를 사용하는 경우 절차의 해당 단계를 조정합니다. -
CA 인증서는
/etc/pki/tls/certs/ca.crt파일에 저장됩니다. 다른 경로를 사용하는 경우 절차의 해당 단계를 조정합니다. - 클라이언트 및 웹 서버는 서버의 호스트 이름을 웹 서버의 IP 주소로 확인합니다.
프로세스
mod_ssl패키지를 설치합니다.yum install mod_ssl
# yum install mod_sslCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/httpd/conf.d/ssl.conf파일을 편집하고 다음 설정을<VirtualHost _default_:443>지시문에 추가합니다.서버 이름을 설정합니다.
ServerName example.com
ServerName example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow
서버 이름은 인증서의 Common Name 필드에 설정된 항목과 일치해야 합니다.
선택 사항: 인증서에 SAN(
Subject Alt Names) 필드에 추가 호스트 이름이 포함된 경우 이러한 호스트 이름에도 TLS 암호화를 제공하도록mod_ssl을 구성할 수 있습니다. 이를 구성하려면 해당 이름으로ServerAliases매개변수를 추가합니다.ServerAlias www.example.com server.example.com
ServerAlias www.example.com server.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 개인 키, 서버 인증서 및 CA 인증서에 대한 경로를 설정합니다.
SSLCertificateKeyFile "/etc/pki/tls/private/example.com.key" SSLCertificateFile "/etc/pki/tls/certs/example.com.crt" SSLCACertificateFile "/etc/pki/tls/certs/ca.crt"
SSLCertificateKeyFile "/etc/pki/tls/private/example.com.key" SSLCertificateFile "/etc/pki/tls/certs/example.com.crt" SSLCACertificateFile "/etc/pki/tls/certs/ca.crt"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 보안상의 이유로
root사용자만 개인 키 파일에 액세스할 수 있도록 구성합니다.chown root:root /etc/pki/tls/private/example.com.key chmod 600 /etc/pki/tls/private/example.com.key
# chown root:root /etc/pki/tls/private/example.com.key # chmod 600 /etc/pki/tls/private/example.com.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 주의권한이 없는 사용자가 개인 키에 액세스한 경우 인증서를 취소하고 새 개인 키를 만들고 새 인증서를 요청합니다. 그렇지 않으면 TLS 연결이 더 이상 안전하지 않습니다.
firewalld를 사용하는 경우 로컬 방화벽에서 포트443을 엽니다.firewall-cmd --permanent --add-port=443/tcp firewall-cmd --reload
# firewall-cmd --permanent --add-port=443/tcp # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow httpd서비스를 다시 시작합니다.systemctl restart httpd
# systemctl restart httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
참고개인 키 파일을 암호로 보호한 경우
httpd서비스가 시작될 때마다 이 암호를 입력해야 합니다.
검증
-
브라우저를 사용하고
https://example.com에 연결합니다.
1.9.2. Apache HTTP Server에서 지원되는 TLS 프로토콜 버전 설정 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 RHEL의 Apache HTTP Server는 최신 브라우저와 호환되는 안전한 기본값을 정의하는 시스템 전체 암호화 정책을 사용합니다. 예를 들어 DEFAULT 정책은 apache에서 TLSv1.2 및 TLSv1.3 프로토콜 버전만 사용하도록 정의합니다.
Apache HTTP Server에서 지원하는 TLS 프로토콜 버전을 수동으로 구성할 수 있습니다. 환경에서 특정 TLS 프로토콜 버전만 활성화해야 하는 경우 절차를 따르십시오. 예를 들면 다음과 같습니다.
-
환경에 해당 클라이언트가 클라이언트가 취약한
TLS1(TLSv1.0) 또는TLS1.1프로토콜을 사용할 수도 있어야 하는 경우 -
Apache가
TLSv1.2또는TLSv1.3프로토콜만 지원하도록 구성하려는 경우
사전 요구 사항
- TLS 암호화는 Apache HTTP 서버에 TLS 암호화 추가에 설명된 대로 서버에서 활성화됩니다.
프로세스
/etc/httpd/conf/httpd.conf파일을 편집하고 다음 설정을 TLS 프로토콜 버전을 설정하려는<VirtualHost>지시문에 추가합니다. 예를 들어TLSv1.3프로토콜만 활성화하려면 다음을 수행합니다.SSLProtocol -All TLSv1.3
SSLProtocol -All TLSv1.3Copy to Clipboard Copied! Toggle word wrap Toggle overflow httpd서비스를 다시 시작합니다.systemctl restart httpd
# systemctl restart httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 사용하여 서버가
TLSv1.3을 지원하는지 확인합니다:openssl s_client -connect example.com:443 -tls1_3
# openssl s_client -connect example.com:443 -tls1_3Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 사용하여 서버가
TLSv1.2를 지원하지 않는지 확인합니다.openssl s_client -connect example.com:443 -tls1_2
# openssl s_client -connect example.com:443 -tls1_2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서버가 프로토콜을 지원하지 않으면 명령에서 오류를 반환합니다.
140111600609088:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:ssl/record/rec_layer_s3.c:1543:SSL alert number 70
140111600609088:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:ssl/record/rec_layer_s3.c:1543:SSL alert number 70Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 선택 사항: 다른 TLS 프로토콜 버전에 대해 명령을 반복합니다.
1.9.3. Apache HTTP Server에서 지원되는 암호 설정 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 Apache HTTP 서버는 최근 브라우저와 호환되는 안전한 기본값을 정의하는 시스템 전체 암호화 정책을 사용합니다. 시스템 전체에서 허용하는 암호 목록은 /etc/crypto-policies/back-ends/openssl.config 파일을 참조하십시오.
Apache HTTP Server에서 지원하는 암호를 수동으로 구성할 수 있습니다. 환경에 특정 암호가 필요한 경우 절차를 따르십시오.
사전 요구 사항
- TLS 암호화는 Apache HTTP 서버에 TLS 암호화 추가에 설명된 대로 서버에서 활성화됩니다.
프로세스
/etc/httpd/conf/httpd.conf파일을 편집하고SSLCipherSuite매개변수를 TLS 암호를 설정하려는<VirtualHost>지시문에 추가합니다.SSLCipherSuite "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!SHA1:!SHA256"
SSLCipherSuite "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!SHA1:!SHA256"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예제에서는
EECDH+AESGCM,EDH+AESGCM,AES256+EECDH및AES256+EDH암호만 활성화하며SHA1및SHA256메시지 인증 코드(MAC)를 사용하는 모든 암호를 비활성화합니다.httpd서비스를 다시 시작합니다.systemctl restart httpd
# systemctl restart httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
Apache HTTP Server에서 지원하는 암호 목록을 표시하려면 다음을 수행합니다.
nmap패키지를 설치합니다.yum install nmap
# yum install nmapCopy to Clipboard Copied! Toggle word wrap Toggle overflow nmap유틸리티를 사용하여 지원되는 암호를 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow