무한루프/개발, 업무

HTTP와 HTTPS 차이점 HTTPS 적용 방법

시원한생맥주 2025. 3. 9. 09:00

 

 

HTTP와 HTTPS 차이점 HTTPS 적용 방법

 

요즘은 대부분 HTTPS를 사용하지만,

일부 경우에는 여전히 HTTP를 쓰는 경우가 있다.

 

 

 

요즘 HTTP를 쓰는 경우

로컬 개발 환경에서 (Localhost)

  • HTTPS 설정 없이 간단하게 개발하기 위해 http://localhost를 많이 씀
  • 로컬에서는 SSL 인증서가 필요 없고 설정이 간단해서 개발 중에는 HTTP로 테스트하는 경우가 많다

예시 :

npm run dev  # Vue.js 개발 서버 실행 → http://localhost:5173

 

해결 방법 (로컬에서도 HTTPS 사용하기)

  • Node.js 환경 : mkcert 같은 도구를 사용해서 로컬 SSL 인증서 생성
  • Spring Boot: application.properties 에서 HTTPS 설정 가능

 

내부 네트워크에서 ( 사설망 , 사내 시스템 )

  • 외부 인터넷에 노출되지 않는 내부 서비스 (API 서버, DB, 사내 인트라넷 등 )
  • 내부 시스템에서는 보안 위협이 적기 때문에 HTTPS 설정 없이 HTTP를 쓰는 경우가 있음

예시 :

  • 사내 API 서버 : http://192.168.0.10:8080/api
  • 프라이빗 네트워크에서 실행되는 내부 대시보드

하지만 내부 네트워크에서도 보안이 중요하므로 HTTPS 를 쓰는 게 좋음!

 

 

 

IoT, 임베디드 시스템

  • 라즈베리파이 , IoT 장치, 임베디드 시스템에서는 리소스가 부족해서 HTTPS 적용이 어려운 경우가 있음
  • 특히 저사양 장비에서는 TLS 암호화가 부담이 될 수도 있음

예시 :

  • 스마트 홈 기기 : http://192.168.1.100:5000
  • 간단한 웹서버가 돌아가는 라즈베리파이

하지만 IoT 장치는 보안 취약점이 많으므로 , HTTPS 적용이 권장됨

 

 

 

옛날 시스템 & 레거시 서비스

  • 오래된 시스템 ( 옛날 ERP, 구형 웹서버 등 ) 은 HTTPS 미지원
  • 일부 정부기관이나 학교 시스템도 여전히 HTTP 기반 서비스가 있음

예시 :

보안 취약점이 많으므로 가급적 HTTPS로 마이그레이션 하는 게 좋음

 

 

 

 

그럼 요즘은 무조건 HTTPS를 써야 할까?

거의 모든 경우 HTTPS를 써야 한다!

HTTPS (HyperText Transfer Protocol Secure)는 HTTP + 보안(암호화, 인증, 무결성) 적용한 통신 방식이다.

일반적인 HTTP는 데이터를 암호화하지 않고 평문(plain text)으로 주고받기 때문에 중간에 데이터가 노출될 위험이 있다.
HTTPS는 SSL/TLS 프로토콜을 이용해 데이터를 암호화해서 전송하므로 보안성이 높다.

 

HTTPS vs HTTP 차이점

  HTTP HTTPS
보안 암호화 없음 (평문) TLS/SSL로 암호화
중간자 공격 가능 (패킷 가로채기 쉬움) 불가능 (암호화됨)
검색 엔진 최적화(SEO) 불리함 유리함 (구글 SEO 가점)
쿠키 & 인증 Secure 쿠키 사용 불가 Secure 쿠키 사용 가능
포트 번호 기본적으로 80번 포트 사용 기본적으로 443번 포트 사용
속도 약간 빠름 약간 느릴 수 있음 (암호화 과정 때문)

 

 

HTTPS가 필요한 이유

 

데이터 암호화개인정보 보호 (비밀번호, 카드 정보, API 통신)
중간자 공격(MITM) 방어해커가 네트워크에서 패킷을 가로채는 것을 방지
브라우저 경고 메시지 회피 → HTTP 사이트는 보안 경고가 뜸
SEO(
검색 엔진 최적화) 개선구글은 HTTPS 사이트를 검색 순위에서 우대
Secure
쿠키 사용 가능로그인 유지 시 더 안전함

 

 

 

HTTPS 적용하는 방법

SSL/TLS 인증서 발급

  • 무료: Let's Encrypt
  • 유료: GlobalSign, DigiCert, Sectigo

웹 서버에 HTTPS 설정

  • Nginx: server { listen 443 ssl; }
  • Apache: SSLEngine on
  • Spring Boot: server.ssl.enabled=true

 

 

 

클라이언트에서 HTTPS로 요청 보내기

axios.get("https://example.com/api");

 

 

웹사이트에서 HTTP → HTTPS 강제 리디렉션

server {
    listen 80;
    server_name example.com;
    return 301 https://example.com$request_uri;
}