어제 오늘 내일

[Spring Boot] "주의 요함? 고객 다 도망가요!" 무료로 HTTPS(SSL) 적용하기 (Let's Encrypt & Nginx) 본문

IT/SpringBoot

[Spring Boot] "주의 요함? 고객 다 도망가요!" 무료로 HTTPS(SSL) 적용하기 (Let's Encrypt & Nginx)

hi.anna 2026. 3. 19. 10:14

 
예전에는 SSL 인증서를 사려면 매년 수십만 원을 내야 했습니다. 하지만 이제는 Let's Encrypt라는 비영리 단체 덕분에 누구나 무료로 보안 접속(HTTPS)을 구축할 수 있습니다.
특히 우리가 앞서 설치한 Nginx가 있다면, 명령어 몇 줄로 1분 만에 적용할 수 있습니다.


1. 준비물: 도메인 (필수!)

SSL 인증서는 IP 주소(예: 13.124.xx.xx)에는 발급해 주지 않습니다. 반드시 도메인(예: my-service.com)이 있어야 합니다.

  • 가비아, 호스팅케이알, AWS Route53 등에서 도메인을 하나 구매하세요. (실습용이면 .shop 같은 건 500원이면 삽니다.)
  • 도메인 관리 페이지에서 A 레코드에 여러분의 EC2 탄력적 IP(Elastic IP)를 등록해 두세요.

2. Certbot 설치하기

Certbot은 복잡한 인증서 발급 과정을 자동으로 해주는 효자 프로그램입니다. EC2(Ubuntu)에 접속해서 설치해 봅시다.

# 1. 패키지 목록 업데이트
sudo apt update

# 2. snapd 설치 (우분투 최신 버전엔 이미 있음)
sudo apt install snapd

# 3. core 최신화
sudo snap install core; sudo snap refresh core

# 4. Certbot 설치 (클래식 모드)
sudo snap install --classic certbot

# 5. 심볼릭 링크 연결 (명령어 쉽게 쓰기 위해)
sudo ln -s /snap/bin/certbot /usr/bin/certbot

3. 인증서 발급받기 (Nginx 플러그인)

Certbot은 Nginx 설정을 자동으로 읽어서 수정까지 해줍니다. (진짜 편합니다!)

# Nginx용 인증서 발급 및 자동 설정
sudo certbot --nginx

명령어를 치면 몇 가지 질문을 합니다.

  1. 이메일 입력: (인증서 갱신 알림용) -> 본인 이메일 입력
  2. 약관 동의: Y 엔터
  3. 뉴스레터 구독: N (선택)
  4. 도메인 선택: 아까 연결한 도메인이 목록에 뜹니다. 번호를 누르고 엔터!

잠시 기다리면... "Congratulations!" 메시지가 뜨면서 성공합니다.


4. 무엇이 바뀌었나요?

Nginx 설정 파일을 다시 열어볼까요?

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

놀랍게도 Certbot이 설정을 확 바꿔놨습니다.

  • 기존 80 포트 설정은 놔두고,
  • 443 포트(HTTPS) 설정 블록을 새로 만들었습니다.
  • SSL 인증서 경로(ssl_certificate)도 다 잡혀있습니다.
  • 심지어 http로 들어오면 https로 강제 리다이렉트(Redirect) 하는 설정까지 추가되어 있습니다.

5. 자동 갱신 설정 (평생 무료의 비밀)

Let's Encrypt 인증서의 유효기간은 90일입니다. "3달마다 들어와서 명령어를 쳐야 하나요?"
아니요, Certbot이 설치될 때 자동 갱신 타이머(Timer)를 이미 등록해 뒀습니다.

# 갱신 테스트 (실제로 갱신하진 않고 시뮬레이션만)
sudo certbot renew --dry-run

이 명령어가 에러 없이 끝난다면, 이제 여러분의 서버는 죽을 때까지 HTTPS가 유지됩니다.


6. 결과 확인

이제 브라우저 주소창에 http://내-도메인.com을 입력해 보세요.
순식간에 https://로 바뀌면서 주소창 왼쪽에 영롱한 자물쇠 아이콘🔒이 뜰 겁니다.

이제 여러분의 서비스는:

  1. 보안: 사용자의 비밀번호나 결제 정보가 암호화되어 전송됩니다.
  2. 신뢰: "주의 요함" 경고가 사라져 사용자가 안심합니다.
  3. SEO: 구글 검색 엔진이 HTTPS 사이트를 더 좋아해서 상단에 노출해 줍니다.

마치며

오늘의 결론입니다.

  1. HTTPS는 선택이 아닌 필수다.
  2. Certbot을 쓰면 Nginx 설정을 건드리지 않고도 1분 만에 적용 가능하다.
  3. 자동 갱신 기능 덕분에 한 번 설정하면 신경 끌 수 있다.

자, 이제 서버 구축, 배포, 무중단, 보안까지... "혼자서 서비스 하나를 런칭할 수 있는 모든 기술"을 갖추셨습니다! 축하드립니다! 👏👏👏
이 시리즈의 마지막 포스팅에서는 "서버가 죽었는지 살았는지 어떻게 알죠?" 프로메테우스(Prometheus)와 그라파나(Grafana)로 간지나는 대시보드 만들기를 다루며 대장정을 마무리하겠습니다.
 

반응형
Comments