웹 서버 구성, HTTP HTTPS 설정 및 SSL 인증서 설치 (Let’s Encrypt, Certbot)

현대 웹 애플리케이션에서는 사용자의 데이터 보호와 보안 강화가 중요합니다. 특히 개인정보를 다루는 웹사이트라면 HTTP 대신 HTTPS를 사용해야 합니다. 이를 위해서는 SSL 인증서가 필요합니다. 본 강좌에서는 웹 서버를 구축하고, HTTP와 HTTPS를 설정하는 방법, 그리고 Let’s Encrypt의 Certbot을 사용하여 SSL 인증서를 설치하는 방법에 대해 자세히 설명하겠습니다.

1. 웹 서버 구축

1.1. 웹 서버 선택

웹 서버를 구축하기 위해 여러 가지 옵션이 있지만, 가장 많이 사용되는 웹 서버는 Apache와 Nginx입니다. 두 서버 모두 각자의 장단점이 있습니다. Apache는 모듈화가 잘 되어 있고, Nginx는 빠른 성능과 낮은 자원 소비가 특징입니다. 이번 강좌에서는 Nginx를 사용하여 웹 서버를 구축할 것입니다.

1.2. Nginx 설치

Nginx를 설치하기 위해서는 패키지 관리자를 사용할 수 있습니다. Ubuntu와 같은 Debian 계열의 배포판을 사용하는 경우, 다음 명령어로 Nginx를 설치할 수 있습니다.

sudo apt update
sudo apt install nginx

설치가 완료되면 Nginx 서비스를 시작하고, 상태를 확인합니다.

sudo systemctl start nginx
sudo systemctl status nginx

이를 통해 Nginx가 정상적으로 작동하고 있는지 확인할 수 있습니다. 브라우저에서 http://your_server_ip에 접속하면 Nginx 환영 페이지가 표시될 것입니다.

2. HTTP/HTTPS 설정

2.1. 기본 설정

웹 서버가 제대로 작동하는 것을 확인했다면, 다음 단계로 HTTP와 HTTPS를 설정하겠습니다. Nginx의 기본 설정 파일은 /etc/nginx/sites-available/default에 있습니다.

sudo nano /etc/nginx/sites-available/default

해당 파일을 수정하여 기본 설정을 변경합니다. 아래는 HTTPS를 사용하기 위한 기본 구성 예제입니다.

server {
        listen 80;
        server_name your_domain_or_IP;
        
        return 301 https://$host$request_uri;
    }

위의 설정은 HTTP 요청이 들어왔을 때 자동으로 HTTPS로 리다이렉트합니다. 그 다음으로 HTTPS를 위한 블록을 추가합니다.

server {
        listen 443 ssl;
        server_name your_domain_or_IP;

        ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;

        location / {
            root /var/www/html;
            index index.html index.htm;
        }
    }

이렇게 설정하면 SSL 인증서를 사용할 수 있으며, HTTPS로 안전한 접속이 가능합니다. 설정 후에는 다음 명령어로 Nginx 구성을 테스트하고 재시작합니다.

sudo nginx -t
sudo systemctl restart nginx

3. SSL 인증서 설치 (Let’s Encrypt, Certbot)

3.1. Certbot 설치

SSL 인증서를 무료로 발급받을 수 있는 Let’s Encrypt를 사용하기 위해 Certbot을 설치해야 합니다. Ubuntu에서는 다음 명령어로 Certbot을 설치할 수 있습니다.

sudo apt install certbot python3-certbot-nginx

Certbot이 설치되면, 다음 단계로 SSL 인증서를 발급받기 위한 명령어를 실행합니다.

3.2. SSL 인증서 발급

다음 명령어를 사용하여 도메인에 대한 SSL 인증서를 발급받습니다.

sudo certbot --nginx -d your_domain

위 명령어를 실행하면, Certbot이 Nginx 설정을 자동으로 업데이트하고 SSL 인증서를 자동으로 설치해줍니다. 진행 중에 이메일 주소 입력 및 서비스 약관 동의 절차가 있습니다.

3.3. 자동 갱신 설정

Let’s Encrypt 인증서는 90일마다 만료되기 때문에 자동 갱신을 설정하는 것이 중요합니다. 이를 위해 crontab을 사용하여 자동으로 갱신할 수 있습니다. 아래 명령어로 crontab 편집기를 연 후, 아래 내용을 추가합니다.

sudo crontab -e
0 3 * * * /usr/bin/certbot renew --quiet

위 설정은 매일 새벽 3시에 Certbot이 자동으로 인증서를 갱신하는 역할을 합니다.

4. 결론

이번 강좌에서는 Nginx 웹 서버를 구축하고, HTTP/HTTPS를 설정하는 방법, 그리고 Let’s Encrypt의 Certbot을 사용하여 SSL 인증서를 설치하고 자동 갱신 설정하는 방법에 대해 알아보았습니다. 이러한 과정을 통해 웹 서버의 보안을 강화하고 사용자 데이터를 안전하게 보호할 수 있습니다.

보안은 웹 개발의 중요한 요소이며, HTTPS는 기본적인 요구 사항이 되었습니다. 본 강좌를 통해 여러분이 안전한 웹 애플리케이션을 구축하는 데 도움이 되기를 바랍니다.