서버 구축용 인증서( SSL ) ( from CA ) 발급

FeelSoo·2022년 5월 17일
0

CodeStates

목록 보기
36/43
post-thumbnail

https://github.com/FiloSottile/mkcert

< Ubuntu >

우분투의 경우 다음 명령어를 이용해 설치합니다.


$ sudo apt install libnss3-tools

$ wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.4.3/mkcert-v1.4.3-linux-amd64

$ chmod +x mkcert

$ sudo cp mkcert /usr/local/bin/



< macOS >

macOS 사용자의 경우, Homebrew를 통해 mkcert를 설치할 수 있습니다.

$ brew install mkcert



< 인증서 생성 >

먼저 다음 명령어를 통해 로컬을 인증된 발급기관으로 추가해야 합니다.

$ mkcert -install

다음은 로컬 환경에 대한 인증서를 만들어야 합니다. localhost로 대표되는 로컬 환경에 대한 인증서를 만들려면 다음 명령어를 입력해야 합니다.
$ mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1




이제 옵션으로 추가한 localhost, 127.0.0.1(IPv4), ::1(IPv6)에서 사용할 수 있는 인증서가 완성되었습니다. cert.pem, key.pem 이라는 파일이 생성된 것을 확인할 수 있습니다.

인증서는 공개키, 그리고 인증기관의 서명을 포함하고 있으므로 공개되어도 상관이 없지만, key.pem의 경우 개인 키이므로 git에 커밋하지 않고, 암호처럼 다루어야 합니다.

이제 서버 디렉토리 폴더에 이 두개의 파일을 복사한 후 코드를 작성하면 https 통신을 할 준비가 완성됩니다.



< node.js https 모듈 이용 >

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

https
  .createServer(
    {
      key: fs.readFileSync(__dirname + '/key.pem', 'utf-8'),
      cert: fs.readFileSync(__dirname + '/cert.pem', 'utf-8'),
    },
    function (req, res) {
      res.write('Congrats! You made https server now :)');
      res.end();
    }
  )
  .listen(3001);

이제 서버를 실행한 후 https://localhost:3001로 접속하시면 브라우저의 url 창 왼쪽에 자물쇠가 잠겨있는 HTTPS 프로토콜을 이용한다는 것을 알 수 있습니다!



< express.js 이용 >

만약 express.js 를 사용하는 경우, 다음과 같이 https.createServer의 두번째 파라미터에 들어갈 callback 함수를 Express 미들웨어로 교체하면 그만입니다!

const https = require('https');
const fs = require('fs');
const express = require('express');

const app = express();

https
  .createServer(
    {
      key: fs.readFileSync(__dirname + '/key.pem', 'utf-8'),
      cert: fs.readFileSync(__dirname + '/cert.pem', 'utf-8'),
    },
    app.use('/', (req, res) => {
      res.send('Congrats! You made https server now :)');
    })
  )
  .listen(3001);



More To Do : https://ngrok.com/ 를 활용해 HTTP 서버를 HTTPS로 터널링해보기

profile
세상은 넓고 배울건 많다

0개의 댓글