https와 http2
https 모듈은 웹 서버에 SSL 암호화를 추가합니다. GET이나 POST 요청을 할 때 오가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없게 합니다. 요즘은 로그인이나 결제가 필요한 창에서 https 적용이 필수가 되는 추세입니다.
SSL이 적용된 웹 사이트에서 방문하면 브라우저 창에 자물쇠 표시가 나옵니다.
server1.js
const http = require("http");
http
.createServer((req, res) => {
res.writeHead(500, { "Content-Type": "text/html; charset=utf-8" });
res.write("<h1>Hello Node!</h1>");
res.end("<p>Hello Server!</p>");
})
.listen(8080, () => {
// 서버 연결
console.log("8080번 포트에서 서버 대기 중입니다!");
});
이 서버에 암호화를 적용하려면 https 모듈을 적용해야 합니다. 하지만 https는 아무나 사용할 수 있는 것이 아닙니다. 암호화를 적용하는 만큼, 그것을 인증해줄 수 있는 기관도 필요합니다. 인증서는 인증 기관에서 구입해야 하며, Let's Encrpyt 같은 기관에서 무료로 발급해주기도 합니다.
server1-3.js
const https = require("https");
const fs = require("fs");
https
.createServer(
{
cert: fs.readFileSync("도메인 인증서 경로"),
key: fs.read.readFileSync("도메인 비밀키 경로"),
ca: [
fs.readFileSync("상위 인증서 경로"),
fs.readFileSync("상위 인증서 경로"),
],
},
(req, res) => {
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
res.write("<h1>Hello Node!</h1>");
res.end("<p>Hello Server!</p>");
}
)
.listen(443, () => {
console.log("443번 포트에서 서버 대기 중입니다!");
});
createServer 메서드가 인수를 두 개 받습니다. 두 번째 인수는 https 모듈과 같이 서버 로직이도, 첫 번째 인수는 인증서에 관련된 옵션 객체입니다. 인증서를 구입하면 pem이나 crt, 또는 key 확장자를 가진 파일들을 제공합니다. 파일들을 fs.readFileSync 메서드를 읽어서 cert, key, ca 옵션에 알맞게 넣으면 됩니다. 실제 서버에서는 80 포트 대신 443 포트를 사용하면 됩니다.
노드의 http2 모듈은 SSL 암호화와 더불어 최신 HTTP 프로토콜인 http/2를 사용할 수 있게 합니다. http/2는 요청 및 응답 시간이 기존 http/1.1보다 개산되어 훨씬 효율적으로 요청을 보냅니다. http/2를 사용하면 웹의 속도도 많이 개선됩니다.
실제로는 http/1.1도 파이프라인이라는 기술을 적용하므로 이렇게 큰 차이는 나지 않습니다. 하지만 http/2가 훨씬 효율적입니다.
http2를 적용한 server1-4.js
const http2 = require("http2");
const fs = require("fs");
http2
.createSecureServer(
{
cert: fs.readFileSync("도메인 인증서 경로"),
key: fs.read.readFileSync("도메인 비밀키 경로"),
ca: [
fs.readFileSync("상위 인증서 경로"),
fs.readFileSync("상위 인증서 경로"),
],
},
(req, res) => {
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
res.write("<h1>Hello Node!</h1>");
res.end("<p>Hello Server!</p>");
}
)
.listen(443, () => {
console.log("443번 포트에서 서버 대기 중입니다!");
});
https 모듈과 거의 유사합니다. https 모듈을 http2로, createServer 메서드를 createSecureServer 메서드로 바꾸면 됩니다.
'프로그래밍 언어 > NODE JS' 카테고리의 다른 글
| npm 알아보기 & package.json으로 패키지 관리하기 (1) | 2025.06.01 |
|---|---|
| cluster (0) | 2025.05.29 |
| 쿠키와 세션 이해하기 (1) | 2025.05.23 |
| REST와 라우팅 사용하기 (0) | 2025.05.19 |
| 요청과 응답 이해하기 (0) | 2025.05.16 |