[Node.js] http, https, http2 적용하기

nemo·2022년 7월 18일
0

Node.js

목록 보기
2/3

http는 암호화되지 않은 데이터를 전송하는 프로토콜이기 때문에 보안에 취약하다.

이를 보완하기 위해 https 모듈은 웹 서버에 SSL 암호화를 추가했다. GET, POST 요청 시 데이터를 암호화해서 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없도록 한다.
주소창에 자물쇠 표시가 있다면 https가 적용된 페이지이다.

http/2는 요청 및 응답 방식이 html/1.1보다 효율적으로 개선되었다. 따라서 http/2는 웹의 속도도 비교적 빠르다.
Node에서 http2 모듈을 사용하면 http/2를 사용할 수 있으며 SSL 암호화도 설정된다.


http 적용하기

const http = require('http');

http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  // ...
  res.end();
})
  .listen(8080, () => {
  console.log('8080 port');
})

https 적용하기

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.end();
})
  .listen(443, () => {
  console.log('443 port');
})

http2 적용하기

const http2 = require('http2');
const fs = require('fs');

http2.createSecureServer({
  cert: fs.readFileSync('도메인인증서경로'),
  key: fs.readFileSync('도메인비밀키경로'),
  ca: [
    fs.readFileSync('상위인증서경로'),
    fs.readFileSync('상위인증서경로'),
  ],
}, (req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
  // ...
  res.end();
})
  .listen(443, () => {
  console.log('443 port');
})

0개의 댓글