인증서

Siwoo Pak·2021년 10월 20일
0

http/네트워크

목록 보기
9/12

HTTPS 사설 인증서 발급 및 서버 구현

1. 설치(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/

# 맥에서 설치
$ brew install mkcert
# firefox 브라우저 사용시
$ brew install nss

2. 인증서 생성

# 로컬을 발급된 발급기관으로 추가
$ mkcert -install
# 로컬 환경에 대한 인증서 생성
# 개인키: key.pem, 공개키: cert.pem
# localhost 127.0.0.1 ::1 이 환경에서 사용할 수 있는.
$ mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1

3. https 서버 작성

3.1 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 mad https server now :)');
      res.end();
    }
  ).listen(3001);

3.2 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);

4. ngrok을 이용한 https로 터널링

  • ngrok: http로 만들어진 서버를 https 프로토콜로 터널링 해주는 프로그램.
  • 설치
$ brew install --cask ngrok
  • 간단한 서버 작성
const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});
  • 서버구동후 ngrok으로 터널링
$ node index.js
Server running at http://127.0.0.1:3000/
$ ngrok http 3000
  • ngrok 터널에서 실행 결과
  • https프로토콜로 포워딩된 사이트로 접속해도 연결가능
  • 세션 유효기간이 2시간이라 계속 유지하고 싶은 경우, ngrok사이트에 회원가입하고 토큰을 받아와서 사용하면 됨
# ngrok 실행시 authtoken값을 입력하여 실행하는 방법
$ ngrok authtoken [토큰값]
  • 다시 ngrok을 실행히시키면 유효시간 정보는 없어진걸 볼수 있다. 도메인나 포트번호도 지정가능함.
profile
'하루를 참고 인내하면 열흘을 벌 수 있고 사흘을 참고 견디면 30일을, 30일을 견디면 3년을 벌 수 있다.'

0개의 댓글