웹사이트 보안을 강화하세요: NGINX와 SSL 설정을 Certbot으로 쉽게

발행: (2026년 1월 3일 오후 08:35 GMT+9)
10 분 소요
원문: Dev.to

Source: Dev.to

Nginx-Certbot

웹사이트 보안은 오늘날 디지털 환경에서 필수 요소가 되었습니다. 사이버 위협이 증가하고 사용자의 프라이버시 의식이 높아짐에 따라 신뢰성, 성능, 검색 엔진 순위 측면에서 HTTPS로 웹사이트를 보호하는 것이 필수가 되었습니다. SSL/TLS 인증서는 진지한 온라인 존재감을 위해 반드시 필요합니다. 검색 엔진은 암호화된 웹사이트를 선호하고 최신 브라우저는 보안되지 않은 사이트에 대해 사용자에게 적극적으로 경고하기 때문입니다.

가장 널리 사용되는 웹 서버 중 하나인 NGINX는 전 세계 수백만 개의 웹사이트에 동력을 제공하며 뛰어난 성능과 안정성으로 유명합니다. SSL 암호화와 결합하면 웹 콘텐츠를 제공하기 위한 빠르고 안전하며 신뢰할 수 있는 기반을 제공합니다. 그러나 설정 복잡성과 인증서 관리의 어려움 때문에 많은 개발자와 시스템 관리자는 SSL 설정을 부담스럽게 느낍니다.

이때 Certbot이 과정을 단순화해 줍니다. Certbot은 Let’s Encrypt에서 무료 SSL 인증서를 구매, 설치 및 갱신하는 작업을 자동화하여 HTTPS 설정에 일반적으로 수반되는 많은 수동 작업을 없애줍니다. 이 가이드에서는 다음을 수행합니다.

  1. NGINX를 설치합니다.
  2. Certbot을 사용해 SSL로 보호합니다.
  3. 최소한의 유지보수로 웹사이트를 안전하게 유지합니다.

Source:

Ubuntu에 NGINX 설치 및 설정

웹 서버를 설치하고 설정하는 것은 SSL을 사용해 웹사이트를 보호하기 전의 첫 단계입니다. 여기서는 고성능이며 가벼운 웹 서버인 NGINX를 사용합니다. NGINX는 역방향 프록시 및 웹 애플리케이션 제공에 자주 활용됩니다.

사전 요구 사항

  • Ubuntu 서버 (18.04, 20.04 또는 그 이후 버전)
  • sudo 권한이 있는 비루트 사용자
  • 서버 IP 주소를 가리키는 등록된 도메인 이름

NGINX 설치

sudo apt update
sudo apt install nginx

설치가 완료되면 NGINX가 자동으로 서버에서 실행됩니다. 정상적으로 동작하는지 확인하세요:

sudo service nginx status

또는 브라우저에서 서버의 공인 IP 주소를 열어보세요. NGINX가 정상 작동 중이라면 기본 “Welcome to NGINX” 페이지가 표시됩니다.

서버 블록 설정

NGINX는 서버 블록(Apache의 가상 호스트와 유사)을 사용해 하나의 서버에서 여러 웹사이트를 관리합니다.

cd /etc/nginx/sites-enabled

도메인용 새 설정 파일을 만듭니다(proxy를 의미 있는 이름으로 교체):

sudo nano proxy

다음 설정을 추가합니다(플레이스홀더를 실제 값으로 교체):

server {
    listen 80;
    listen [::]:80;

    server_name YOUR-DOMAIN-NAME;

    location / {
        proxy_pass http://localhost:PORT/;
    }
}

설정 설명

  • listen 80; – 들어오는 HTTP 트래픽을 수신합니다.
  • server_name – 실제 도메인(예: example.com).
  • proxy_pass – 로컬에서 실행 중인 애플리케이션(예: Node.js 또는 백엔드 서비스)으로 요청을 전달합니다.
  • PORT – 애플리케이션이 리스닝하고 있는 포트(예: 3000).

파일을 저장하고 종료합니다(CTRL + O, 뒤에 CTRL + X).

NGINX 설정 테스트

변경을 적용하기 전에 항상 설정 구문을 테스트합니다:

sudo nginx -t

출력에 “syntax is ok”와 “test is successful”이 표시되면 진행해도 됩니다.

NGINX 재시작 및 상태 확인

sudo service nginx restart
sudo service nginx status

Source:

Certbot(Let’s Encrypt)으로 NGINX SSL 보안 설정

HTTPS를 활성화하는 것은 NGINX가 HTTP로 애플리케이션을 정상적으로 제공한 뒤 반드시 수행해야 하는 중요한 단계입니다. SSL/TLS 암호화는 중간자 공격을 방지하고, 사용자 신뢰를 높이며, 검색 엔진 순위에도 긍정적인 영향을 줍니다.

Snap을 이용한 Certbot 설치

Ubuntu에서는 Snap을 통해 Certbot을 설치하는 것이 권장됩니다. Snap을 사용하면 항상 최신이며 가장 안전한 버전을 받을 수 있습니다.

sudo snap install core
sudo snap refresh core

Certbot 설치:

sudo snap install --classic certbot

certbot 명령을 전역에서 사용할 수 있도록 심볼릭 링크를 만듭니다:

sudo ln -s /snap/bin/certbot /usr/bin/certbot

설치 확인:

certbot --version

NGINX용 SSL 인증서 발급 및 설치

Certbot은 NGINX 설정을 자동으로 감지하고 최소한의 입력만으로 SSL을 구성할 수 있습니다.

sudo certbot --nginx

과정 중에 다음과 같은 항목을 입력하라는 메시지가 표시됩니다:

  • 이메일 주소 입력(갱신 및 보안 알림에 사용).
  • Let’s Encrypt 서비스 약관에 동의.
  • 전자 프론티어 재단(EFF)과 이메일 주소를 공유할지 여부 선택.
  • HTTPS를 활성화할 도메인 선택.
  • 모든 HTTP 트래픽을 HTTPS로 리다이렉트할지 여부 결정.

스크립트가 완료되면 Certbot은 다음을 수행합니다:

  1. Let’s Encrypt에서 신뢰할 수 있는 SSL 인증서를 발급받음.
  2. NGINX 서버 블록을 수정해 포트 443에서 ssl_certificatessl_certificate_key 지시자를 사용하도록 설정.
  3. 자동 갱신을 설정(기본적으로 systemd 타이머가 설치됨).

HTTPS 확인

브라우저에서 https:// 로 도메인을 열어 보세요. 자물쇠 아이콘이 표시되면 유효한 인증서가 적용된 것입니다.

자동 갱신

Certbot의 갱신 타이머는 하루에 두 번 실행됩니다. 수동으로 갱신 과정을 테스트하려면 다음을 실행합니다:

sudo certbot renew --dry-run

드라이런이 성공하면 인증서는 만료되기 전에 자동으로 갱신됩니다.

이것으로 끝! 이제 NGINX 서버가 무료 Let’s Encrypt 인증서를 사용해 HTTPS로 안전하게 사이트를 제공하며, 인증서는 자동으로 갱신됩니다. 🎉

Certbot (NGINX)으로 SSL 설치 및 구성

사전 요구 사항

  • NGINX가 실행 중인 서버
  • 서버 IP 주소를 가리키는 도메인 이름
  • 루트 또는 sudo 권한

Certbot 설치

sudo apt update
sudo apt install certbot python3-certbot-nginx

SSL 인증서 발급

대화형 Certbot 명령을 실행합니다:

sudo certbot --nginx

과정 중에 다음과 같은 입력을 요구받습니다:

  1. 이메일 주소 입력 (갱신 알림용)
  2. Let’s Encrypt 서비스 약관에 동의
  3. 보호하려는 도메인 선택
  4. HTTP 트래픽을 HTTPS로 리다이렉트할지 선택 (권장)

완료되면 Certbot은 다음을 수행합니다:

  • SSL 인증서 생성
  • NGINX 설정을 자동으로 업데이트
  • HTTPS가 활성화된 상태로 NGINX를 재로드

HTTPS 구성 확인

Certbot이 완료된 후, 브라우저에서 다음 주소로 웹사이트를 엽니다:

https://YOUR-DOMAIN-NAME

브라우저 주소 표시줄에 보안 연결(🔒)이 표시됩니다.

자동 인증서 갱신

Let’s Encrypt 인증서는 90일 동안 유효합니다. Certbot은 자동으로 갱신 타이머를 설정하지만, 수동으로 테스트할 수도 있습니다:

sudo certbot renew --dry-run

이 테스트는 서비스 중단 없이 SSL 인증서가 자동으로 갱신될 것임을 확인합니다.

Back to Blog

관련 글

더 보기 »

RGB LED 사이드퀘스트 💡

markdown !Jennifer Davis https://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%...

Mendex: 내가 만드는 이유

소개 안녕하세요 여러분. 오늘은 제가 누구인지, 무엇을 만들고 있는지, 그리고 그 이유를 공유하고 싶습니다. 초기 경력과 번아웃 저는 개발자로서 17년 동안 경력을 시작했습니다.