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 기반 서비스가 있음
예시 :
- 레거시 웹 애플리케이션 : http://old-legacy-system.com
- 구형 프린터 / 네트워크 장비의 웹 인터페이스
보안 취약점이 많으므로 가급적 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;
}
'무한루프 > 개발, 업무' 카테고리의 다른 글
HTTP와 세션 : 쿠키를 활용한 인증 방식 (0) | 2025.03.08 |
---|---|
변경된 소스 코드만 추출하여 보관하고 패키징 하는 배치 스크립트 (0) | 2025.03.07 |
MS-SQL에서 CURSOR 사용: 성능과 대안 (0) | 2025.03.05 |
MS-SQL 함수(FUNCTION) 작성 예제 (0) | 2025.03.04 |
MS-SQL 저장 프로시저(Stored Procedure) 작성 예제 (0) | 2025.03.03 |