🐕 mkcert...를 사용해봅시다.
https://github.com/FiloSottile/mkcert
mkcert 깃허브에 방문해보면 윈도우를 지원해주긴합니다만
Chocolatey를 사용하거나 혹은 Scoop 을 사용하라고 안내해줍니다.
Scoop은 잘 모르지만 Chocolatey는 윈도우의 패키지매니저로
맥의 homebrew와 비슷한 역할을 하는 패키지 매니저입니다.
한번 설치를 해놓고 사용하면 아주 편하니까 여러분들도 꼭 사용해보세요
수많은 응용프로그램들을 아주 간편하게 설치할 수 있습니다.
하지만 오늘은 Chocolatey의 사용법까지는 다루지 않겠습니다.
알아서 찾아서 설치해보세요..
윈도우는 이렇게 설치를 하라는군요
chokolatey가 잘 설치되었는지 확인하기 위해 먼저
choco 명령어를 파워쉘에서 입력해보겠습니다.
choco
이렇게 버전이 잘 출력된다면 잘 설치된 것이겠네요!
choco install mkcert
깃허브 문서의 설명을 따라 인스톨을 해줍니다.
관리자 권한이 제대로 부여되지 않으면 액세스가 거부되었다는 오류가 뜰 수 있으니까
powershell을 관리자 권한으로 실행하여 시도하도록합니다.
cmd 환경의 경우는 안해봐서 모르겠지만.. 한번 해보시고 되면 개이득
안되면 파워쉘로 시도해보세요
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이 어디에 저장되어있는지 확인하시고 작성하시기 바랍니다.
바로 copy paste하시는 경우엔 저와 폴더구조가 다른 경우 오류가 발생할 수 있습니다.
https://localhost:3001/
이제 위 링크로 접속해보면
이런식으로 https로 프로토콜이 바뀌어있고 자물쇠모양이 생긴것을 확인할 수 있습니다!
🥶 express를 이용하기
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);
🐶마치며
간단한 실습만 한번 해봤는데 뭔가 이지투스타트 하드투마스터일것같다는 불안감이 드네요
실전에서 사용할 때도 이렇게 쉬웠으면 좋겠읍니다..