[HTTPS] Let's Encrypt + Certbot + nip.io로 도메인 발급 없이 HTTPS 등록하기

2025. 2. 19. 23:39·개발 노트

도메인을 사긴 부담되는데 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를 구축할 수 있으므로 개발용 환경에 유용하다.

 

'개발 노트' 카테고리의 다른 글

SSH 터널링으로 로컬 PC와 Private Subnet DB 연결해서 프로젝트 실행하기  (0) 2025.09.19
gemini-cli로 더미 데이터 바이브 생성한 후기  (0) 2025.07.31
[AWS] DNS 미설정으로 인한 RDS 생성 불가  (0) 2025.02.14
'개발 노트' 카테고리의 다른 글
  • SSH 터널링으로 로컬 PC와 Private Subnet DB 연결해서 프로젝트 실행하기
  • gemini-cli로 더미 데이터 바이브 생성한 후기
  • [AWS] DNS 미설정으로 인한 RDS 생성 불가
jec0101
jec0101
생각이 많은 사람
  • jec0101
    생각하는 사람
    jec0101
    • 분류 전체보기 (13)
      • 공부 (1)
      • 개발 노트 (4)
      • 회고 (4)
      • 기타 (4)
        • 주절주절 (1)
      • 스프링부트 (0)
        • @Annotations (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    리눅스 명령어
    AWS
    삼성전자 dx 알고리즘 특강
    자바 람다
    SW 마에스트로
    소프트웨어 마에스트로
    소마 합격후기
    주저리주저리
    let's encrypt
    nip.io
    springboot
    rds 오류
    https 적용
    VPC
    nginx
    삼성전자 알고리즘
    Spring Security
    UTIL
    회고
    EC2
    인프라
    람다 스코프
    util vs service
    합격 후기
    RDS
    certbot
    람다 제약조건
    삼성전자 dx
    Service
    effectively final
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
jec0101
[HTTPS] Let's Encrypt + Certbot + nip.io로 도메인 발급 없이 HTTPS 등록하기
상단으로

티스토리툴바