์ฃผ์๋ฐ ์ผ์ชฝ์ ์๋ฌผ์ ๋ฅผ ๋๋ฌ๋ณด๋ฉด ์ ๋ฌธ๊ตฌ๋ฅผ ๋ณผ ์ ์๋ค.
HTTP๋ ํด๋ผ์ด์ธํธ์์ ์์ฒญํ ๊ฐ์ ์๋ฒ๋ฅผ ๊ฑฐ์ณ ๊ฒฐ๊ณผ๊ฐ์ ์ ๋ฌํด์ฃผ๋ ์์ฉ๊ณ์ธต์ ๋ํ์ ์ธ ํ๋กํ ์ฝ๋ก, ๋ฌด์ํ์ฑ
/ ๋น์ฐ๊ฒฐ์ฑ
์ด ํน์ง์ด์๋ค.
HTTPS๋ HTTP + Secure์ ํฉ์น ๋ป์ผ๋ก, HTTP ํ๋กํ ์ฝ์ ๋ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋๋๋ค
- HTTPS๋ก ๋ณด๋ธ ์์ฒญ์ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์กํ๋ค
๋ฐ๋ผ์ ์ค๊ฐ์ ์ 3์๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ทจํ๋๋ผ๋ ๊ทธ ๋ด์ฉ์ ์์๋ณผ ์ ์๋ค.
๋ด์ฉ์ ์์๋ณผ ์ ์๊ฒ ์ํธํํด์ฃผ๋ ๊ฒ์ SSL/TLS ํ๋กํ ์ฝ ๋๋ถ์ ๊ฐ๋ฅํ๋ค. ์๋์์ ์์ธํ !
HTTPS๋ HTTP ํต์ ์ ํ๋ ์์ผ ๋ถ๋ถ์์ SSL/TLS ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์๋ฒ ์ธ์ฆ๊ณผ ์ํธํ๋ฅผ ์งํํ๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ์ CA๋ฅผ ํตํด ์๋ฒ๋ฅผ ์ธ์ฆํ๋ ๊ณผ์ ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ๊ณผ์ ์ ์์ฐ๋ฅธ ํ๋กํ ์ฝ์ SSL ๋๋ TLS์ด๋ผ๊ณ ํ๋ค.
(SSL์ด ํ์คํ๋๋ฉฐ ๋ฐ๋ ์ด๋ฆ์ด TLS๋ก ์ฌ์ค์ ๋์ผํ ํ๋กํ ์ฝ๋ก ๋ด๋ ๋ฌด๋ฐฉํ๋ค.)
SSL/TLS ํ๋กํ ์ฝ์ ์๋ฒ์ธ์ฆ ๋ฐ ์ํธํ ๋ฐฉ์
- ๋์นญํค / ๋น๋์นญํค ๋ฐฉ์์ ์ฌ์ฉ
๋น๋์นญํค - ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ํ๋ณดํ๋๋ฐ ์ฌ์ฉ
- CA(๊ณต์ธ ์ธ์ฆ์ ๋ฐ๊ธ ๊ธฐ๊ด)์์ ์๋ฒ์ ์ ์์ ๋ณด์ฆํ๋ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด์ฃผ๋ ๊ณณ์ด๋ค.
- ์๋ฒ๋ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ๊ธฐ ์ํด CA๋ก <์๋ฒ์ ๊ณต๊ฐํค + ์ ๋ณด> ๋ฅผ ์ ์กํ๋ฉฐ, CA๋ ์๋ฒ์ ๊ณต๊ฐํค์ ์ ๋ณด๋ฅผ ๋น๋ฐํค๋ก ์ํธํํ์ฌ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ๋๋ค.
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ ์์ฒญ์ ๋ฐ์ผ๋ฉด CA์๊ฒ ๋ฐ๊ธ ๋ฐ์ ์ธ์ฆ์๋ฅผ ๋ณด๋ด์ค๋ค. ๋ธ๋ผ์ฐ์ ๋ CA์ ๋ฆฌ์คํธ์ ๊ณต๊ฐํค๋ฅผ ๋ด์ฅํ๊ณ ์์ผ๋ฏ๋ก CA๊ฐ ๋ฐ๊ธํ ์ธ์ฆ์๊ฐ ๋ง๋ค๋ฉด CA์ ๊ณต๊ฐํค๋ก ์ธ์ฆ์์ ๋ณตํธํ๋ฅผ ์๋ํ๋ค.
- ๋ณตํธํ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์งํ๋๋ค๋ฉด ํด๋น ์๋ฒ๊ฐ ์ ๋ขฐํ ์ ์๋ ์๋ฒ์์ ์ ์ ์๊ฒ ๋๋ค.
๐ ๊ณต๊ฐํค
๋ ๋ณต์กํ ์ฐ์ฐ์ ํ์๋กํด ๋ณด์์ด ํ์คํ ๋ฐ๋ฉด์ ๋ ๋ง์ ์๊ฐ์ ์๋ชจํ๋ค๋ ๋จ์ ์ด ์๋ค.
๋์นญํค - ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ฃผ๊ณ ๋ฐ์ ๋ ์ฌ์ฉ
HTTPS ์์ฒญ์ ํตํด ์ค์ง์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ณผ์ ์์๋ ๋์นญํค๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค.
์ 3์๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ทจํ์ฌ๋ ์ํธํ๋ ๋ฐ์ดํฐ๋ก ์ ์ก๋์ด ๋ณผ ์์๊ฒ๋์ด ์์ ํ HTTP์๋ต์ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
๐๋์นญํค
๋ ๊ณต๊ฐํค(๋น๋์นญํค) ๋ฐฉ์์ ๋นํด ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
mkcert๋ผ๋ ํ๋ก๊ทธ๋จ์ ์ด์ฉํด์ ๋ก์ปฌ ํ๊ฒฝ(๋ด ์ปดํจํฐ)์์ ์ ๋ขฐํ ์ ์๋ ์ธ์ฆ์๋ฅผ ๋ง๋ค ์ ์๋ค.
mkcert -install
cert.pem(๊ณต๊ฐํค)
, key.pem(๊ฐ์ธํค)
์ด๋ผ๋ ํ์ผ์ด ์์ฑ๋๋ค. ๊ฐ์ธ ํค๋ ๋ง ๊ทธ๋๋ก ๊ฐ์ธ๋ง์ด ๊ฐ๊ณ ์์ด์ผ ํ๋ ํค ์ด๋ฏ๋ก ์ธ๋ถ์ ์ ์ถ์ํค์ง ์๋ ๊ฒ์ด ์ข๋ค. mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1
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);
localhost:3001๋ฒ ํฌํธ๋ก ์ ์ ํ 'Congrats! You made https server now :)' ๋ฉ์ธ์ง๊ฐ ์ถ๋ ฅ๋๋ฉด ์ฑ๊ณต์ด๋ค !