3.웹 서버 구축하기, HTTPS를 위한 Let’s Encrypt SSL 인증서 설정

현대적인 웹 애플리케이션은 안전하고 신뢰할 수 있는 방식으로 사용자 데이터를 보호하기 위해 HTTPS를 사용하는 것이 필수적입니다.
이번 섹션에서는 Ubuntu 서버에서 웹 서버를 구축하고, Let’s Encrypt를 사용하여 무료 SSL 인증서를 설치하고 설정하는 방법에 대해 상세히 설명하겠습니다.

3.1 웹 서버란?

웹 서버는 클라이언트의 요청에 따라 웹 페이지를 제공하는 소프트웨어 및 하드웨어의 조합입니다.
사용자가 브라우저를 통해 URL을 입력하면, 웹 서버는 해당 URL에 대한 요청을 수신하고, 요청된 웹 페이지를 반환합니다.

3.1.1 웹 서버의 종류

  • Apache: 가장 널리 사용되는 오픈 소스 웹 서버 소프트웨어.
  • Nginx: 경량이며 높은 성능을 제공하는 웹 서버.
  • LiteSpeed: 고성능 웹 서버로 상용입니다.
  • Microsoft IIS: Windows 기반의 웹 서버.

3.2 Ubuntu에 Apache 웹 서버 설치하기

3.2.1 설치 전 준비사항

설치를 시작하기 전에 서버에 SSH로 접속해야 합니다.
로컬 환경에서 터미널을 열고 다음 명령어를 통해 서버에 접속합니다:

ssh username@your_server_ip

3.2.2 Apache 웹 서버 설치하기

Ubuntu에서는 간단하게 APT 패키지 관리자를 사용하여 Apache 서버를 설치할 수 있습니다:

sudo apt update
sudo apt install apache2

설치가 완료되면 웹 브라우저를 열고 서버의 IP 주소를 입력하여 Apache가 정상적으로 설치되었는지 확인합니다.
기본 Apache 환영 페이지가 표시되어야 합니다.

3.2.3 방화벽 설정

Apache가 외부 요청을 받을 수 있도록 방화벽을 설정해야 합니다. 다음 명령어로 UFW(Uncomplicated Firewall)를 사용하여 HTTP 및 HTTPS 트래픽을 허용합니다.

sudo ufw allow 'Apache Full'

3.3 HTTPS를 위한 Let’s Encrypt SSL 인증서 설정

3.3.1 Let’s Encrypt란?

Let’s Encrypt는 무료 SSL 인증서를 제공하는 인증 기관(CA)으로, 누구나 SSL을 쉽게 설치하여 HTTPS를 구현할 수 있도록 도와줍니다.
자동화된 도구인 Certbot을 사용하여 설치와 관리를 간단히 수행할 수 있습니다.

3.3.2 Certbot 설치하기

Certbot은 Let’s Encrypt 인증서를 쉽게 발급하고 갱신할 수 있게 해주는 도구입니다.
Certbot을 설치하기 위해 먼저 필요한 패키지를 설치합니다:

sudo apt install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt update
sudo apt install certbot python3-certbot-apache

3.3.3 SSL 인증서 발급하기

Certbot을 사용하여 SSL 인증서를 발급받습니다. 아래 명령어를 입력하여 도메인에 대한 인증서를 발급합니다:

sudo certbot --apache

명령어를 입력한 후, 도메인 이름과 이메일 주소를 입력했다면, Certbot이 자동으로 SSL 인증서를 발급하고 Apache 웹 서버의 설정을 업데이트합니다.

3.3.4 HTTPS 자동 리디렉션 설정하기

SSL 인증서가 발급된 후, 웹 사이트에 대한 모든 HTTP 요청을 HTTPS로 자동으로 리디렉션하려면 Apache 설정을 수정해야 합니다.
다음 명령어로 Apache 구성 파일을 엽니다:

sudo nano /etc/apache2/sites-available/000-default.conf

파일의 내용 중 <VirtualHost *:80>와 관련된 부분을 찾습니다.
그곳에 다음 코드를 추가하여 HTTP를 HTTPS로 리디렉션하도록 설정합니다:

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

변경사항을 저장하고 파일을 닫습니다. 다음 명령어로 Apache를 다시 시작합니다:

sudo systemctl restart apache2

3.4 SSL 인증서 자동 갱신 설정하기

Let’s Encrypt 인증서는 90일마다 갱신해야 합니다. 이를 자동으로 수행하기 위해 Cron 작업을 설정할 수 있습니다.
Cron 편집기를 열기 위해 다음 명령어를 입력합니다:

sudo crontab -e

이제 아래 줄을 추가하여 매일 자동으로 인증서를 갱신하도록 설정합니다:

0 0 * * * /usr/bin/certbot renew --quiet

위 설정은 매일 자정에 인증서를 자동으로 갱신합니다.
이 작업이 잘 작동하는지 확인하기 위해 다음 명령어로 수동으로 갱신을 시도해 볼 수 있습니다:

sudo certbot renew --dry-run

3.5 결론

이제 여러분은 Ubuntu 서버에서 Apache 웹 서버를 구축하고 Let’s Encrypt를 통해 SSL 인증서를 성공적으로 설정했습니다.
안전한 HTTPS 연결을 통해 사용자와의 신뢰를 구축하여 웹사이트의 신뢰성을 높일 수 있습니다.

앞으로 추가적인 보안을 위해 웹 애플리케이션 방화벽(WAF)이나 보안 플러그인을 사용하는 것을 고려해보세요.
이러한 조치는 여러분의 웹사이트를 더욱 안전하게 유지하는 데 기여할 것입니다.