HTTP & HTTPS : 웹 사이트에서 데이터를 주고받을 때 사용하는 규칙.
웹 브라우저와 서버 간 통신을 둘 다 가능하게 하지만 HTTPS는 보안이 더 강화된 버전.
HTTP(HyperText Transfer Protocol) :
웹에서 데이터를 주고받는 기본적인 방식. 웹 사이트의 텍스트, 이미지, 동영상 등 서버에서 브라우저로 전송하는 규칙
- 데이터를 암호화되지 않은 상태로 전송
- 빠르고 가벼우나, 보안 취약
- URL이 http://로 시작
HTTPS(HyperText Transfer Protocol Secure) :
HTTP에 보안 기능이 추가된 버전. 데이터를 암호화해서 해커가 중간에 훔쳐볼 수 없게 보호.
- SSL/TLS 암호화를 사용하여 데이터를 보호
- 해커가 데이터를 가로채도 해독할 수 없음
- 보안이 중요한 은행, 쇼핑몰, 로그인 페이지 등에서 필수
- URL이 https://로 시작
+) SSL / TLS
SSL(보안 소켓 계층) : 1990년대에 개발된 보안 프로토콜. 보안 취약점이 발견되면서 TLS(전송 계층 보안)가 SSL 대체.
- 웹 사이트가 HTTPS를 사용하면 SSL/TLS를 이용해 데이터를 암호화할 수 있음
<SSL/TLS 주요 기능>
- 데이터 암호화
- 데이터 무결성
- 신뢰성 보장
<SSL/TLS의 작동 방식>
1. 클라이언트 (웹 브라우저) -> 서버에 접속
2. 서버 -> SSL/ TLS 인증서를 클라이언트에게 전달
3. 클라이언트 -> 인증서를 확인하고 신뢰할 수 있는 인증서인지 확인
4. 서버 & 클라이언트 -> 암호화 키 교환 (공개키 암호화 사용)
5. 데이터 암호화 시작 -> 이후의 통신은 암호화된 상태로 진행됨
이 과정을 통해 사용자가 HTTPS 사이트를 안전하게 이용 가능
<SSL 인증서 로드 & https 서버 실행 >
const https = require("https");
const fs = require("fs");
const express = require("express");
const options = {
key: fs.readFileSync("private-key.pem"),
cert: fs.readFileSync("certificate.pem")
};
https.createServer(options, app).listen(443, () => {
console.log("secure server running on port 443");
});