도메인을 사긴 부담되는데 HTTPS 통신이 필요하다면?
nip.io로 손쉽게 HTTPS를 붙일 수 있다!
배경지식
🤔 nip.io
nip.io란 ip 기반 도메인을 자동으로 유효한 도메인으로 바꿔주는 공짜 와일드카드 DNS 서비스이다.
nip.io 도메인 앞에 IP 주소를 적으면 도메인처럼 쓸 수 있다.
ex) 서버 IP가 12.345.678.90이다 -> 12.345.678.90.nip.io
🔒 HTTPS 인증서 발급
이 사이트가 신뢰할만한 사이트라고 인증해주는 인증서이다.
이 인증서가 있어야 HTTPS 통신이 가능하다.
이번엔 무료로 인증서를 발급해주는 Let's Encrypt + Certbot을 사용한다.
- Let's Encrypt: 무료로 HTTPS 인증서를 발급해주는 인증기관
- Certbot: Let's Encrypt에서 인증서를 받아오고 설치까지 자동으로 해주는 툴
HTTPS 적용법
서버 ip가 12.345.678.90이라고 가정하자.
- 도메인은 `12.345.678.90.nip.io`를 쓰자.
(`12-345-678-90.nip.io` 등 다른 변형도 가능한데, nip.io를 참고하자)
Certbot 설치
우선 서버에 ssh로 연결해주고
certbot을 설치한다.
sudo apt install python3-certbot-nginx
Certbot으로 인증서 발급
sudo certbot --nginx -d 12.345.678.90.nip.io
첫 실행이면 이메일이나 약관 동의, 뉴스 레터 구독 등등을 물어볼 수도 있다. 적당히 넘겨주자.
이 과정 중에 Certbot이 Let's Encrypt에 요청하여 인증서를 받아온다.
- 인증서는 `/etc/letsecncrypt/live/123.456.78.90.nip.io`에 저장된다.
- 총 4개의 파일이 있어야 정상이며, 권한 제한 디렉토리이므로 `sudo`를 붙여서 확인한다.
Nginx 설정 확인
certbot이 웬만하면 알아서 수정해주긴 하지만 확인하는 걸 추천한다.
certbot은 두 개의 서버 블록을 자동으로 생성한다.
- HTTPS 서버 블록: 443 포트로 들어온 요청 처리
- HTTP -> HTTPS 리다이렉트 블록: 80포트로 들어온 요청을 HTTPS로 리다이렉션
sudo vim /etc/nginx/sites-available/default
수정하려면 마찬가지로 sudo를 붙여야 한다
백엔드 서버로 리버스 프록시가 필요하면 HTTPS 블록을 적당히 수정하면 된다.
아래와 비슷하게 되어있으면 성공이다.
# HTTP → HTTPS 리다이렉트
server {
listen 80;
server_name 12.345.678.90.nip.io;
return 301 https://$server_name$request_uri;
}
# HTTPS 블록
server {
listen 443 ssl;
server_name 12.345.678.90.nip.io;
ssl_certificate /etc/letsencrypt/live/12.345.678.90.nip.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/12.345.678.90.nip.io/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
# 백엔드 프록시
location / {
proxy_pass http://localhost:8080; # 백엔드 포트에 맞게 변경
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
설정 테스트 및 적용
sudo nginx -t
설정파일 문법을 확인한다. sudo는 까먹지 말자.
sudo systemctl reload nginx
nginx를 재시작한다.
HTTPS 동작 확인
https://12.345.678.90.nip.io로 접속했을 때 자물쇠 아이콘이 뜨면 성공이다.
별도로 도메인 구매나 DNS 설정 없이 HTTPS를 구축할 수 있으므로 개발용 환경에 유용하다.
'개발 노트' 카테고리의 다른 글
[AWS] DNS 미설정으로 인한 RDS 생성 불가 (0) | 2025.02.14 |
---|