Skip to main content

Let's Encrypt로 서버에 무료 SSL 인증서 쉽게 적용하기

Summary

AI 클립으로 정리됨

출처 및 참고 : https://www.youtube.com/watch?v=iNFpyWFGl3M

핵심 요약

Let's Encrypt를 활용하면 서버에 비용 없이 HTTPS(SSL) 인증서를 설치할 수 있습니다. 도메인만 준비하면 실제 서버에서 명령어 몇 줄로 안전한 웹 환경을 구축할 수 있습니다. 다양한 환경(Docker, Flask, Nginx 등)에서도 손쉽게 적용할 수 있습니다.

HTTPS와 SSL의 중요성

인터넷에서 정보를 주고받을 때 암호화되지 않으면 해킹에 취약할 수 있습니다. HTTPS는 데이터를 암호화해 사용자의 개인정보와 신뢰성을 지킵니다. 오늘날 모든 웹사이트에 HTTPS가 필수인 이유입니다.

인증서 발급 원리

SSL 인증서를 발급받으려면 인증 기관(Certification Authority, CA)에 내가 해당 도메인 소유자인 걸 증명해야 합니다. Let's Encrypt는 ACME라는 프로토콜을 통해 서버가 URL 접근을 통한 챌린지를 수행하고, 인증이 되면 SSL 인증서를 발급해 줍니다.

준비물: 서버와 도메인

HTTPS를 설정하려면:

  • 서버(VPS 등)와 해당 서버를 가리키는 도메인 주소가 있어야 합니다.

  • 도메인 DNS에서 A(IPv4) 및 AAAA(IPv6) 레코드가 서버 IP를 정확히 가리키도록 설정해야 합니다.

Certbot 설치 및 SSL 인증서 발급

가장 인기 있는 방법은 Certbot이라는 도구를 사용하는 것입니다. 우분투에서는 아래처럼 설치할 수 있습니다.

sudo apt install certbot

설치 후, 서버에서 다음 명령으로 인증서를 발급받습니다.

sudo certbot certonly --standalone -d 도메인명

이 명령은 인증 서버가 발급을 위한 챌린지를 수행할 임시 서버를 띄우고, 성공 시 아래 경로에 인증서와 개인키를 저장합니다.

/etc/letsencrypt/live/도메인명/fullchain.pem
/etc/letsencrypt/live/도메인명/privkey.pem

Flask에 SSL 인증서 적용하기

플라스크 웹 앱을 직접 SSL로 띄우고 싶을 때 아래처럼 설정할 수 있습니다.

app.run(
    host="0.0.0.0",
    port=443,
    ssl_context=(
        "/etc/letsencrypt/live/도메인명/fullchain.pem",
        "/etc/letsencrypt/live/도메인명/privkey.pem"
    )
)

이렇게 하면 Flask가 HTTPS로 외부 접속을 직접 받을 수 있습니다.

Nginx와 Docker로 HTTPS 구성하기

대형 서비스나 여러 웹앱을 운영한다면 Nginx를 리버스 프록시로 쓰는 것이 일반적입니다. 이럴 때는 인증서 파일을 Nginx 설정에 직접 지정하면 됩니다.

엔진엑스 설정 예시:

listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/도메인명/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/도메인명/privkey.pem;

Docker Compose를 활용한다면, 인증서 디렉터리를 컨테이너에 read-only 볼륨으로 마운트해 사용합니다.

인증서 갱신과 삭제

Let's Encrypt 인증서는 기본적으로 90일간 유효합니다. 자동 갱신은 간편하게 아래와 같이 진행할 수 있습니다.

sudo certbot renew

만약 인증서를 폐기(삭제)하고 싶다면 다음을 활용하세요.

sudo certbot revoke --cert-name 도메인명

갱신이나 폐기는 문제가 생기거나 보안상 변경이 필요할 때 꼭 기억하세요.

인사이트

HTTPS 적용은 더는 비용과 복잡함의 문제가 아닙니다. Let's Encrypt와 Certbot 덕분에 개인 서버·사이드 프로젝트·사업용 웹사이트까지 누구나 쉽게 무료 인증서를 적용할 수 있습니다. 인증서 관리(갱신/폐기)도 몇 개의 명령어로 해결 가능하니, 꼭 주기적으로 상태를 확인하고 자동화까지 해두면 좋습니다. 서버마다 세팅법은 다르므로 내 환경의 특징(VPS, Docker, Nginx 등)을 잘 이해하고 적용하세요. 초보자라면 실습을 직접 해보면 쉽게 익힐 수 있습니다!

출처 및 참고 :

이 노트는 요약·비평·학습 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.