https, http2

기초/HTTP|2021. 10. 19. 22:05

https

https는 웹 서버에 SSL 암호화를 추가하는 모듈이다.

 

개인 정보 보호에 대한 관심이 높아짐에 따라, https 적용이 필수가 되었다.

https가 적용되면 구글 크롬을 기준으로, 아래 이미지처럼 주소창 옆에 자물쇠 아이콘이 뜬다.

 

 

요청을 보낼 때 헤더에 너무 많은 정보가 자세하게 드러나게 된다. 쿠키값, 쿼리스트링 등...

이런 중요한 정보들이 탈취가 되는 경우를 대비하기 위해서 https를 사용하여 오고 가는 데이터를 암호화한다.

 

const http = require("http");
const fs = require("fs").promises;

http
  .createServer((req, res) => {
    res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
    res.write("<h1>Hello, Node.</h1>");
    res.write("<p>Hello server</p>");
    res.end("<p>Hello doodoo</p>");
  })
  .listen(8080, () => {
    console.log("8080번 포트에서 서버 대기 중입니다.");
  });

위와 같은 기존 http서버에 cert, key, ca와 같은 인수를 추가하면...

const https = require("https");
const fs = require("fs");

https
  .createServer(
    {
      cert: fs.readFileSync("도메인 인증서 경로"),
      key: fs.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 서버로 만들 수 있다.
(포트넘버는 반드시 443이어야 하는 것은 아니지만~ 443이어야만 생략이 가능하다)

 

물론 아무렇게나 만들 수 있는 것은 아니고,
공식 인증기관(letsencrypt 등)에서 별도의 인증서를 발급받는 과정이 필요하다.

 

 

http2

SSL암호화와 더불어, 최신 HTTP 프로토콜인 http/2를 사용하는 모듈이다. (현재는 3까지 나옴)

→ 동시성을 높여 요청 및 응답 방식 및 웹의 속도가 기존 http/1.1보다 개선되었음

'기초 > HTTP' 카테고리의 다른 글

HTTP Expires:0은 모든 브라우저에서 즉시 만료를 보장하지 않는다  (0) 2023.05.30
세션  (0) 2021.10.19
쿠키  (0) 2021.10.14

댓글()