: ๋ก์ปฌ ํ๊ฒฝ(๋ด ์ปดํจํฐ)์์ ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ์๋ฅผ ๋ง๋ค ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ
mkcert
Homebrew๋ฅผ ํตํด mkcert๋ฅผ ๋ค์ด ๋ฐ๋๋ค.
brew install mkcert
mkcert -install
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
ํ์ผ์ด ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.cert.perm
: ๊ณต๊ฐ ํค์ ์ธ์ฆ๊ธฐ๊ด์ ์๋ช
์ ํฌํจํ๊ณ ์๋ ์ธ์ฆ์(certificate) / ๊ณต๊ฐ๋์ด๋ Okey.perm
: ๊ฐ์ธ ํค / ๊ณต๊ฐ๋๋ฉด X์ด๋ ๋ฐ๊ธ ๋ฐ์ key์ cert์ ์ ์ฅ ๊ฒฝ๋ก๋ฅผ ์๊ณ ์์ด์ผ, ๋์ค์ ํ์ฉํ ์ ์๋ค.
Node.js ํ๊ฒฝ์์ HTTPS ์๋ฒ๋ฅผ ์์ฑํ๊ธฐ ์ํด https ๋ด์ฅ ๋ชจ๋์ ์ฌ์ฉํด ๋๊ณ , express.js๋ฅผ ์ฌ์ฉํด๋ ๋๋ค.
const https = require('https'); // HTTPS ๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ
const fs = require('fs'); // File System ๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ
const option = {
key: fs.readFileSync(__dirname + '/key.pem', 'utf-8'),
cert: fs.readFileSync(__dirname + '/cert.pem', 'utf-8'),
}; // key.pem๊ณผ cert.pem ์ธ์๋ก ๋๊ฒจ์ฃผ๊ธฐ
https
.createServer(option, (req, res) => {
res.write('Congrats! You made https server now :)');
res.end();
})
.listen(3000);
__dirname
์ ํ์ฌ ์คํ ์ค์ธ ํด๋ ๊ฒฝ๋ก๋ฅผ ๋ํ๋ธ๋ค.key: fs.readFileSync('./key.pem', 'utf-8')
์ ๊ฐ์ ์๋ฏธ)https.createServer()
์ ๋๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ ๋ค์ด๊ฐ ์ฝ๋ฐฑ ํจ์๋ฅผ express ๋ฏธ๋ค์จ์ด๋ก ๊ต์ฒดํ๋ฉด ๋๋ค.
const https = require('https');
const fs = require('fs');
const express = require('express'); // express ๋ชจ๋ ๋ถ๋ฌ์ค๊ธฐ
const app = express(); // ์๋ฒ ์คํ
const option = {
key: fs.readFileSync(__dirname + '/key.pem', 'utf-8'),
cert: fs.readFileSync(__dirname + '/cert.pem', 'utf-8'),
};
https
.createServer(
option,
app.use('/', (req, res) => {
res.send('Congrats! You made https server now :)');
})
)
.listen(3000);