Let's Encrypt를 이용해서 HTTPS 적용하기

HTTPS를 적용하는 이유? 왜 필요한가

웹사이트를 운영하다 보면 보안이 점점 더 중요해진다. HTTPS는 데이터를 암호화해서 주고받는 방식이라 사용자의 개인정보를 보호하고, 신뢰성을 높여준다. 브라우저에서도 HTTP 사이트에 접속하면 "안전하지 않음" 경고를 띄울 정도다. 검색 엔진 순위에도 영향을 주니, 이제는 선택이 아니라 필수다.

Let's Encrypt란? 왜 무료인가?

유료로 발급해주는 기관이 많은데, 왜 무료일까? Let's Encrypt는 무료로 SSL/TLS 인증서를 발급해주는 서비스다. 인터넷 보안을 널리 퍼트리자는 목표로 시작된 비영리 프로젝트라 비용이 들지 않는다. 누구나 쉽게 인증서를 발급받아 웹사이트를 보호할 수 있으며, 유료 인증서와 성능 차이도 거의 없어서 개인 프로젝트나 소규모 사이트에 적합하다.

Let's Encrypt를 이용해서 VM에 올린 웹을 보호해보자

VM에 웹 서버를 띄웠다면, Let's Encrypt로 HTTPS를 적용해보자. 설치부터 설정까지 간단하며, 자동화 도구도 제공된다. 절차를 하나씩 따라가 보자.

절차

1. Certbot 설치

VM에 certbot을 설치한다. (우분투 환경 기준)

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

2. 인증서 발급

도메인이 연결된 상태에서 아래 명령어를 실행해 인증서를 발급받는다.

sudo certbot --nginx -d your_domain.com -d www.your_domain.com

이 과정에서 Let's Encrypt가 도메인 소유권을 확인하며, 성공적으로 인증서가 발급되면 자동으로 nginx 설정이 적용된다.

3. 웹 서버 설정 확인 (nginx 기준)

인증서 발급 후, nginx 설정이 올바른지 확인한다. 기본적인 설정 예시는 다음과 같다.

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain.com www.your_domain.com;

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

    root /var/www/html;
    index index.html;
}

설정이 끝났다면 다음 명령어로 오류 여부를 확인하고 적용한다.

sudo nginx -t
sudo systemctl reload nginx

443 포트가 열리고, 인증서 경로도 자동으로 설정된다. 필요하면 다시 점검하고 재시작하자.

4. 브라우저에서 확인

브라우저에서 https://your_domain.com으로 접속하여 자물쇠 아이콘이 표시되는지 확인한다. 보인다면 성공이다!

갱신하는 방법은?

Let's Encrypt 인증서는 90일마다 갱신해야 한다. 자동 갱신을 설정하려면 아래 명령어를 크론탭에 추가하면 된다.

sudo certbot renew --dry-run

이 명령어를 실행해 테스트하고, 문제없이 동작한다면 자동 갱신이 설정된 것이다.

주의점

  • 인증서 발급 시 www.your_domain.com과 your_domain.com 모두 포함할 것!
  • 443 포트가 열려 있어야 한다.
  • 갱신이 자동으로 되지 않는 경우 certbot을 수동으로 실행해 확인한다.