| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
- string
- 배열
- 인텔리제이
- SpringBoot
- 문자열
- vscode
- HashMap
- 테스트자동화
- junit5
- 자바스크립트
- Visual Studio Code
- java테스트
- list
- 정규식
- input
- Java
- html
- 자바문법
- javascript
- ArrayList
- 자바
- CSS
- IntelliJ
- junit
- Eclipse
- 단위테스트
- Array
- js
- 스프링부트
- math
- Today
- Total
어제 오늘 내일
[Spring Boot] "주의 요함? 고객 다 도망가요!" 무료로 HTTPS(SSL) 적용하기 (Let's Encrypt & Nginx) 본문
[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
명령어를 치면 몇 가지 질문을 합니다.
- 이메일 입력: (인증서 갱신 알림용) -> 본인 이메일 입력
- 약관 동의:
Y엔터 - 뉴스레터 구독:
N(선택) - 도메인 선택: 아까 연결한 도메인이 목록에 뜹니다. 번호를 누르고 엔터!
잠시 기다리면... "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://로 바뀌면서 주소창 왼쪽에 영롱한 자물쇠 아이콘🔒이 뜰 겁니다.
이제 여러분의 서비스는:
- 보안: 사용자의 비밀번호나 결제 정보가 암호화되어 전송됩니다.
- 신뢰: "주의 요함" 경고가 사라져 사용자가 안심합니다.
- SEO: 구글 검색 엔진이 HTTPS 사이트를 더 좋아해서 상단에 노출해 줍니다.
마치며
오늘의 결론입니다.
- HTTPS는 선택이 아닌 필수다.
- Certbot을 쓰면 Nginx 설정을 건드리지 않고도 1분 만에 적용 가능하다.
- 자동 갱신 기능 덕분에 한 번 설정하면 신경 끌 수 있다.
자, 이제 서버 구축, 배포, 무중단, 보안까지... "혼자서 서비스 하나를 런칭할 수 있는 모든 기술"을 갖추셨습니다! 축하드립니다! 👏👏👏
이 시리즈의 마지막 포스팅에서는 "서버가 죽었는지 살았는지 어떻게 알죠?" 프로메테우스(Prometheus)와 그라파나(Grafana)로 간지나는 대시보드 만들기를 다루며 대장정을 마무리하겠습니다.
