ssl.conf 파일
일반적으로 Apache 서버는 웹 사이트의 보안 통신을 위해 SSL/TLS 프로토콜을 사용한다. ssl.conf 파일은 Apache 웹 서버의 SSL/TLS 설정을 관리하는 파일로 Apache의 mod_ssl 모듈을 사용하여 SSL/TLS 연결을 설정하고 구성하는 데 사용된다.
SSL/TLS란?
SSL (Secure Sockets Layer) 및 TLS (Transport Layer Security)는 컴퓨터 네트워크에서 데이터 통신의 보안을 제공하기 위해 사용되는 프로토콜로 SSL은 초기 버전이며, TLS는 SSL의 최신 버전이다. 클라이언트와 서버 간의 통신을 암호화하고 인증하여 웹 사이트, 이메일, 파일 전송 등을 포함한 다양한 인터넷 서비스에서 보안 연결을 구축하는 데 사용된다.
① 데이터의 기밀성 보장
SSL/TLS는 데이터를 암호화하여 제3자가 데이터를 볼 수 없도록 보호한다. 데이터는 암호화되어 전송되므로 누군가가 가로챈다고 해도 해독하기 어렵다.
② 데이터의 무결성 보장
데이터의 무결성을 검증하는데 데이터가 전송 중에 변경되지 않았는지 확인하고, 변경되었다면 통신 오류로 처리하여 안전한 연결을 유지한다.
③ 상호 인증
서버의 신원을 인증하는 데 사용된다. 클라이언트는 서버의 공개 키를 검증하여 서버가 신뢰할 수 있는지 확인할 수 있는데 이를 통해 중간자 공격을 방지하고 사용자는 신뢰할 수 있는 서버와 통신할 수 있다.
④ 클라이언트 인증 (선택 사항)
클라이언트의 신원을 인증하는 데 사용된다. 클라이언트 인증은 선택 사항이며, 웹 사이트나 애플리케이션이 클라이언트에 대한 추가 보안 요구 사항을 가질 때 사용될 수 있다.
ssl.conf 주요 설정
# 443번 포트에서 SSL/TLS 연결을 수신하도록 설정
Listen 443
# .crt 파일을 "application/x-x509-ca-cert" MIME 유형으로 인식하도록 지정
AddType application/x-x509-ca-cert .crt
# .crl 파일을 "application/x-pkcs7-crl" MIME 유형으로 인식하도록 지정
AddType application/x-pkcs7-crl .crl
# SSL/TLS 세션 정보를 캐시에 저장하는 방법을 지정
SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
# SSL/TLS 세션 캐시의 유효 기간을 설정
SSLSessionCacheTimeout 300
# 기본 뮤텍스 설정을 사용
Mutex default
# SSL/TLS에 사용되는 난수 생성을 제어하는 설정
SSLRandomSeed startup file/dev/urandom 256
SSLRandomSeed connect builtin
<VirtualHost *:443>
ServerAdmin root@localhost
ServerName www.test.or.kr
#ServerAlias www.test.or.kr
DocumentRoot /home/test/webapps/ROOT
ErrorLog /var/log/httpd/ssl-test.or.kr-error_log
TransferLog /var/log/httpd/ssl-test.or.kr_access_log
JkMount /* worker1
JkMount /*.article worker1
JkMount /*.do worker1
JkMount /servlet/* worker1
JkMount /*.jsp worker1
LogLevel error
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
1. AddType application/x-x509-ca-cert .crt
- 이 설정은 확장자가 .crt인 파일을 "application/x-x509-ca-cert" MIME 유형으로 인식하도록 지정한다. .crt 파일은 일반적으로 X.509 인증서 파일을 나타내는데 이 설정을 통해 Apache 서버는 .crt 파일을 클라이언트에게 전송할 때 올바른 MIME 유형을 포함하여 전달할 수 있다.
2. AddType application/x-pkcs7-crl .crl
- 이 설정은 확장자가 .crl인 파일을 "application/x-pkcs7-crl" MIME 유형으로 인식하도록 지정한다. .crl 파일은 일반적으로 PKCS#7 형식의 인증서 폐기 목록(Certificate Revocation List)을 나타내는데 이 설정을 통해 Apache 서버는 .crl 파일을 클라이언트에게 전송할 때 올바른 MIME 유형을 포함하여 전달할 수 있다.
3. SSLSessionCache
- 이 설정은 SSL/TLS 세션 정보를 캐시에 저장하는 방법을 지정한다. 세션 캐시는 이전에 수립한 SSL/TLS 연결의 세션 정보를 저장하여 동일한 클라이언트와의 재연결 시 세션 복원을 빠르게 처리할 수 있도록 도와준다.
- "shmcb:/var/cache/mod_ssl/scache(512000)"는 세션 캐시를 Shared Memory Cache 형식으로 사용하며, "/var/cache/mod_ssl/scache" 경로에 저장되는 것을 의미한다.
- 숫자 "512000"은 세션 캐시의 최대 크기를 나타냅니다. 이 값은 바이트 단위이며, 예시에서는 512,000바이트를 의미합니다
4. SSLSessionCacheTimeout
- 이 설정은 SSL/TLS 세션 캐시의 유효 기간을 설정한다. 즉 클라이언트와 서버 간의 SSL/TLS 연결이 일정 시간 동안 활동하지 않으면 세션 정보가 캐시에서 삭제된다.
- "300"은 세션 캐시의 유효 기간을 초 단위로 설정한 것으로 예시에서는 300초(5분)로 설정되어 있는데, 클라이언트와 서버 간의 SSL/TLS 연결이 5분 동안 활동하지 않으면 해당 세션 정보는 세션 캐시에서 삭제된다.
5. Mutex default
- Mutex 는 상호 배제(mutual exclusion)를 구현하는 동기화 매커니즘으로, 여러 스레드나 프로세스 간의 동시 액세스를 조절하여 데이터의 일관성과 동기화를 보장한다. 웹 서버에서는 동시에 여러 클라이언트 요청을 처리하기 위해 다중 스레드 또는 다중 프로세스 모델을 사용하는데, 이때 뮤텍스를 사용하여 리소스에 대한 접근을 조절한다.
- "Mutex default" 설정은 Apache 웹 서버에서 사용되는 기본 뮤텍스 매커니즘을 지정한다. 이 설정은 일반적으로 "Mutex" 디렉티브로 설정 파일에 포함되며, 기본적으로 주석 처리되어 있을 수도 있다.
6. SSLRandomSeed
- SSL/TLS에 사용되는 난수 생성을 제어하는 설정으로 난수는 암호화 및 보안 프로토콜에서 중요한 요소로 사용된다.
- "SSLRandomSeed startup file/dev/urandom 256" 설정은 웹 서버가 시작될 때(dev/urandom 파일을 사용하여) 256바이트의 난수 시드를 생성하는 것을 지정한다. "startup"은 서버가 시작될 때 해당 난수 시드를 생성하는 설정이고, "file/dev/urandom"은 /dev/urandom 파일에서 난수를 읽어오는 설정이다. /dev/urandom은 운영 체제에서 제공하는 난수 생성기로, 보안에 충분한 수준의 난수를 생성하는 데 사용된다
- "SSLRandomSeed connect builtin" 설정은 클라이언트와의 SSL/TLS 연결이 수립될 때 내장된 기본 난수 생성기를 사용하여 난수 시드를 생성하는 것을 지정한다. "connect"는 클라이언트와의 연결이 수립될 때 해당 난수 시드를 생성하고
"builtin"는 내장된 기본 난수 생성기를 사용하는 설정이다. 내장된 기본 난수 생성기는 Apache 웹 서버에 내장되어 있으며, 운영 체제에 의존하지 않고도 난수를 생성할 수 있다.
'Server' 카테고리의 다른 글
| Apache httpd.conf 설정하기 (0) | 2023.06.12 |
|---|---|
| RoutingDataSource 설정 (0) | 2022.08.23 |
| 우분투의 명령어 (0) | 2022.08.20 |
| http, https 기본 포트 번호 (0) | 2022.08.17 |
| VirtualBox 서버 설정 (0) | 2022.08.04 |