본문 바로가기
OS/리눅스

Apache2의 SSL 구성

by 헬로웬디 2025. 1. 19.

Apache2 웹 서버는 가장 인기 있는 웹 서버 중 하나입니다. SSL 인증서를 설치하고 HTTPS로 서비스하도록 구성해 볼께요.

1. Apache2 설치

우선 Ububtu 22.04에서 Apache2를 먼저 설치하고 서비스를 시작합니다.

sudo apt update && apt upgrade -y
sudo apt install apache2
sudo systemctl enable apache2
sudo systemctl status apache2

 

2. SSL 모듈 활성화

HTTPS를 사용하려면 SSL 모듈을 활성화해야 합니다. Ubuntu/Debian에서는 a2enmod 명령어를 사용하여 Apache 모듈을 활성화할 수 있습니다. SSL 모듈을 활성화하려면 다음 명령어를 입력합니다.

sudo a2enmod ssl
# Apache의 SSL 모듈을 활성화한 후, Apache 서버를 재시작해야 변경 사항이 적용됩니다.
sudo systemctl restart apache2

3. 인증서 생성

자체 서명 인증서를 만들겠습니다. 

sudo openssl req -x509 -newkey rsa:4096 -sha256 -nodes -keyout apache2.key -out apache2.crt -days 3650

apache2.crt와 apache2.key를 /etc/apache2/certs에 위치해 둡니다.

4. SSL 구성

 Apache2에서 HTTPS의 활성화에 대한 SSL 설정을 구성합니다. Apache에서 SSL 설정 파일인 /etc/apache2/sites-available/ 000-default.conf를 열어 다음을 추가합니다.

# http를 리다이렉트 해주지 않으면 http, https 모두 접속됨
<VirtualHost *:80>
    RewriteEngine On    			
    RewriteCond %{HTTPS} off		
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
</VirtualHost>

<VirtualHost *:443>
	#다음을 추가
    SSLEngine on
    SSLCertificateFile /etc/apache2/certs/apache2.crt
    SSLCertificateKeyFile /etc/apache2/certs/apache2.key
</VirtualHost>

 

  • <VirtualHost *:80> </VirtualHost>
    포트 80에서 들어오는 모든 트래픽에 대해 가상 호스트를 정의합니다.
  • RewriteEngine On
    들어오는 요청에 대해 URL 재작성 작업을 수행하게 합니다. RewriteRule 또는 RewriteCond가 작동하려면 rewrite 엔진이 활성화되어야 합니다.
  • RewriteCond %{HTTPS} off
    현재 연결이 HTTPS를 사용하지 않는지 확인합니다. (현재 연결이 https를 사용하지 않는다면)
  • RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
    (.*) - 이 정규 표현식으로 전체 URL를 매칭합니다.
    https://%{SERVER_NAME}/$1 - 리디렉션할 새로운 URL입니다.
    [R=301,L] -  R=301 플래그는 브라우저와 검색 엔진에게 리소스가 HTTPS로 영구 이동했음을 알리는 것이고, L 플래그는 이 규칙이 일치하면 다른 rewrite 규칙이 처리되지 않도록 보장합니다.

 

서비스를 재시작합니다. https 로 접속 가능하며, http로 접속하면 https로 리다이렉트 됩니다.

 

'OS > 리눅스' 카테고리의 다른 글

crontab  (0) 2025.02.24
timeserver  (0) 2025.01.10
USER ID 및 GROUP ID 변경하는 방법  (0) 2024.09.24
[Rocky] sudo-enabled 사용자 생성하기  (0) 2024.09.15