Node.js로 웹서버 만들기_https와 http2

이애옹·2022년 12월 29일
0

Node.js

목록 보기
16/32

📝 HTTPS 모듈

https 모듈은 웹 서버에 SSL 암호화를 추가한다. GET이나 POST 요청을 할때 오고 가는 데이터를 암호화하여, 중간에 다른 사람이 요청을 가로채도 내용을 확인할 수 없게 된다. 따라서, 로그인이나 결제가 필요한 창에서는 https적용이 필수화 되고있다.


출처 : 서버구축이야기!!

SSL이 적용된 웹 사이트에 방문하면 다음과 같이 브라우저 주소창에 자물쇠 표시가 나타나게 된다.

http 서버에 암호화를 적용하려면 https 모듈을 사용해야한다. 하지만 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.write('<h1>Hello Node!</h1>');
  res.end('<p>Hello Server!</p>');
}).listen(443, () => {
  console.log('443번 포트에서 서버 대기중입니다!');
});

만약 인증서가 있다면 이렇게 코드를 작성해주면 된다고 한다~!

여기서 createServer 메서드는 인자를 두개 받는데, 두번째 인자는 http 모듈과 같이 서버 로직이고, 첫번째 인자는 인증서 관련 옵션 객체이다.(인증서에 따라 pem, crt, key 등 확장자가 다르기 때문에 파일들을 fs.readFileSync 메서드로 읽어서 확장자에 맞게 넣어주면 된다.)


📝 HTTP2 모듈

http2 모듈SSL 암호화 뿐만 아니라, 최신 HTTP 프로토콜인 http/2를 사용할 수 있다. http/2는 요청 및 응답 방식이 기존 http/1 보다 개선되어 효율적으로 요청을 보낼 수 있고, 속도도 개선된다.

만약 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.write('<h1>Hello Node!</h1>');
  res.end('<p>Hello Server!</p>');
}).listen(443, () => {
  console.log('443번 포트에서 서버 대기중입니다!');
});
profile
안녕하세요

0개의 댓글