Apache 웹 서버에서 HTTPS(SSL/TLS) 연결을 설정하는 VirtualHost

Eunhye Kim·2024년 10월 28일
0

Apache 웹 서버에서 HTTPS(SSL/TLS) 연결을 설정하기 위한 가상 호스트 설정

<VirtualHost *:443>
 Protocols h2 h2c http/1.1
 DocumentRoot "/www/test/"
 ServerName domein/test.com:443
 ErrorLog "logs/test.com-ssl-error_log"
 CustomLog "logs/test.com-ssl-access_log" combined env=!not_log
 
 SSLEngine on
 SSLCipherSuite PROFILE=SYSTEM
 SSLProtocol    ALL -SSLv2 -SSLv3
 SSLCipherSuite <cipher_list>
 SSLCertificateFile "/.../ssl.crt"
 SSLCertificateKeyFile "/.../ssl.key"
 SSLCACertificateFile "/.../chain_ssl.crt"

코드 분석

1. Protocols h2 h2c http/1.1

  • HTTP/2 및 HTTP/1.1 프로토콜을 지원하도록 설정한다.

2. DocumentRoot: /www/test/

경로의 파일을 제공하도록 설정.

3. ServerName: domein/test.com:443

도메인에 이 설정이 적용된다.

4. SSLEngine on: SSL/TLS 기능을 활성화한다.

SSL/TLS는 HTTPS 보안 연결을 가능하게 해줌. 즉, 데이터가 전송되는 동안 암호화되어 중간에서 도청당하지 않도록 한다.

5. SSLCipherSuite 및 SSLProtocol

SSLCipherSuite: 허용할 암호화 알고리즘을 정의한다.
암호화 알고리즘은 데이터가 안전하게 전송되도록 데이터를 암호화하는 규칙이다. 암호화 수준이 높을수록 안전성이 증가하지만 속도는 다소 느려질 수 있음.

SSLProtocol ALL -SSLv2 -SSLv3: SSL 프로토콜에서 SSLv2와 SSLv3를 제외하고 최신 TLS 프로토콜을 사용하도록 한다.

6. SSLCertificateFile, SSLCertificateKeyFile, SSLCACertificateFile

SSLCertificateFile: SSL 인증서 파일 경로.
SSLCertificateKeyFile: SSL 인증서의 개인 키 파일 경로.
SSLCACertificateFile: 인증서 체인 파일 경로.

추가 코드

Proxy 설정

  • SSLProxyEngine on: SSL 프록시 기능을 활성화한다.
  • ProxyPass 및 ProxyPassReverse: 요청을 http://127.0.0.1:3000/으로 전달합니다. 이는 서버가 3000 포트에서 실행 중인 Next.js 애플리케이션으로 요청을 프록시하도록 한다.
  • RequestHeader: 요청 헤더에 HTTPS 및 포트 정보를 설정해 프록시 요청의 원본 프로토콜과 포트를 전달한다.
    RequestHeader은 서버가 클라이언트로 HTTPS와 연결 되있다는걸 헤드로 알리는 것.
profile
개발에 몰두하며 성장하는 도중에 얻은 인사이트에 희열을 느낍니다.

0개의 댓글