상세 컨텐츠

본문 제목

사설 인증서 발급 및 HTTPS 서버 구현 - mkcert 이용

Computer Science/Security

by Yongari 2022. 12. 31. 22:22

본문

 

 

목표

HTTPS를 학습하고 서버를 직접 구현해보기

mkcert 라는 프로그램을 이용해서 로컬환경에서 신뢰할 수 있는 인증서를 만들기

 

 

Linux 환경에서 mkcert 설치

Linux

On Linux, first install certutil.

sudo apt install libnss3-tools
    -or-
sudo yum install nss-tools
    -or-
sudo pacman -S nss
    -or-
sudo zypper install mozilla-nss-tools

Then you can install using Homebrew on Linux

brew install mkcert

or build from source (requires Go 1.13+)

git clone https://github.com/FiloSottile/mkcert && cd mkcert
go build -ldflags "-X main.Version=$(git describe --tags)"

or use the pre-built binaries.

curl -JLO "https://dl.filippo.io/mkcert/latest?for=linux/amd64"
chmod +x mkcert-v*-linux-amd64
sudo cp mkcert-v*-linux-amd64 /usr/local/bin/mkcert

For Arch Linux users, mkcert is available on the official Arch Linux repository.

sudo pacman -Syu mkcert

 

 

macOS

On macOS, use Homebrew

brew install mkcert
brew install nss # if you use Firefox

 

 

인증서 생성

다음 명령어를 통해 로컬을 인증된 발급기관으로 추가하기

mkcert -install

 

로컬 환경에 대한 인증서를 만들기

mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1

 

HTTPS 서버 작성

nodejs 환경에서 https 서버를 작성하기 위해서는 https 내장모듈을 이용할 수 있습니다.

 

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! :)");
  })
);

app.listen(3001, "localhost", () => {
  console.log("test");
});

 

관련글 더보기