mkcert를 사용하자…
https://github.com/FiloSottile/mkcert
GitHub – FiloSottile/mkcert: 원하는 이름으로 로컬에서 신뢰할 수 있는 개발 인증서를 만드는 간단한 제로 구성 도구
원하는 이름으로 로컬에서 신뢰할 수 있는 개발 인증서를 만드는 간단한 제로 구성 도구입니다. – GitHub – FiloSottile/mkcert: 로컬에서 신뢰할 수 있는 개발자를 만드는 간단한 제로 구성 도구…
github.com
mkcert github에 방문하시면 Windows를 지원하지만
Chocolatey 또는 Scoop을 사용하라는 메시지가 표시됩니다.
Scoop에 대해 잘 모르지만 Chocolatey는 Windows용 패키지 관리자입니다.
Mac의 Homebrew와 유사한 패키지 관리자입니다.
한번 설치하시면 사용이 매우 쉬우니 꼭 사용해보세요.
수많은 응용 프로그램을 매우 쉽게 설치할 수 있습니다.
하지만 오늘은 Chocolatey 사용법을 다루지 않을 것입니다.
찾아서 설치하세요.

Windows에서 설치하라는 메시지가 표시됨
먼저 chokolatey가 잘 설치되었는지 확인합니다.
powershell에서 choco 명령을 입력해 봅시다.
choco

이렇게 버전이 잘 나온다면 설치가 잘 된겁니다!
choco install mkcert
설치하려면 Github 설명서의 지침을 따르십시오.
관리 권한이 제대로 부여되지 않은 경우 접근이 거부되었다는 오류가 발생할 수 있습니다.
powershell을 관리자 권한으로 실행해 보십시오.
cmd 환경의 경우는 해보지 않아서 모르겠습니다.
그렇지 않다면 powershell을 사용해보십시오
mkcert -install
mkcert가 잘 설치되었다면 위의 명령어를 사용합니다.
로컬을 승인된 발급자로 추가합니다.

위 명령어를 입력하면 위와 같은 보안경고가 뜬다.
좀 무섭지만 설치해보겠습니다.
mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
설치가 완료되면 위 명령어를 입력하여 인증서를 완성합니다.
localhost / 127.0.0.1(IPv4) / ::1(IPv6)에서 사용할 수 있는 인증서를 만들고 싶다는 뜻입니다.
C:\Windows\System32에 key.pem과 cert.pem이 생성된 것을 확인할 수 있습니다.
key.pem은 개인키이므로 유출되지 않도록 잘 관리해야 합니다.
반면 cert.pem은 서버의 공개 키와 서버 정보를 포함하는 디지털 인증서입니다.
파일의 저장 경로를 잘 기억하고 이제 node.js 환경에서
https 서버를 열어봅시다.
node.js의 http 모듈을 사용하여 https 서버 열기
const https = require('https');
const fs = require('fs');
const path = require('path');
const keyPath = path.join('C:', 'Windows', 'System32', 'key.pem');
const certPath = path.join('C:', 'Windows', 'System32', 'cert.pem');
https
.createServer(
{
key: fs.readFileSync(keyPath),
cert: fs.readFileSync(certPath),
},
function (req, res) {
res.write('Congrats! You made https server now :)');
res.end();
},
)
.listen(3001);
path.join 메서드를 사용하여 경로를 일치시켰습니다.
자신의 key.pem과 cert.pem이 어디에 저장되어 있는지 확인하고 작성해주세요.
복사 붙여넣기를 바로 하면 폴더 구조가 저와 다른 경우 오류가 발생할 수 있습니다.
https://로컬호스트:3001/
이제 위의 링크를 클릭하면

이렇게 하면 프로토콜이 https로 변경되고 잠금 모양이 생성된 것을 확인할 수 있습니다!
익스프레스 사용
const https = require('https');
const fs = require('fs');
const express = require('express');
const app = express();
const path = require('path');
const keyPath = path.join('C:', 'Windows', 'System32', 'key.pem');
const certPath = path.join('C:', 'Windows', 'System32', 'cert.pem');
https
.createServer(
{
key: fs.readFileSync(keyPath),
cert: fs.readFileSync(certPath),
},
app.use('/', (req, res) => {
res.send('Congrats! You made https server now :)');
}),
)
.listen(3001);
엔딩
간단한 연습을 딱 한 번 해봤는데, 시작하기는 쉽고 마스터하기는 어려운 것 같아서 걱정입니다.
실전에서 이렇게 사용하기 쉬웠으면 좋겠습니다.




