[๐Ÿฅ ๋„คํŠธ์›Œํฌ] HTTPS

dsfasdยท2022๋…„ 11์›” 11์ผ
0

โ€œ์ด ์‚ฌ์ดํŠธ๋Š” ๋ณด์•ˆ ์—ฐ๊ฒฐ(HTTPS)์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.โ€

์ฃผ์†Œ๋ฐ” ์™ผ์ชฝ์— ์ž๋ฌผ์‡ ๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด ์œ„ ๋ฌธ๊ตฌ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

HTTPS๊ฐ€ ๋ญ˜๊นŒ?

HTTP๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ ์š”์ฒญํ•œ ๊ฐ’์„ ์„œ๋ฒ„๋ฅผ ๊ฑฐ์ณ ๊ฒฐ๊ณผ๊ฐ’์„ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์‘์šฉ๊ณ„์ธต์˜ ๋Œ€ํ‘œ์ ์ธ ํ”„๋กœํ† ์ฝœ๋กœ, ๋ฌด์ƒํƒœ์„ฑ / ๋น„์—ฐ๊ฒฐ์„ฑ์ด ํŠน์ง•์ด์—ˆ๋‹ค.

HTTPS๋Š” HTTP + Secure์„ ํ•ฉ์นœ ๋œป์œผ๋กœ, HTTP ํ”„๋กœํ† ์ฝœ์„ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค

  • HTTPS๋กœ ๋ณด๋‚ธ ์š”์ฒญ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ „์†กํ•œ๋‹ค
    ๋”ฐ๋ผ์„œ ์ค‘๊ฐ„์— ์ œ3์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํƒˆ์ทจํ•˜๋”๋ผ๋„ ๊ทธ ๋‚ด์šฉ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋‹ค.

๋‚ด์šฉ์„ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๊ฒŒ ์•”ํ˜ธํ™”ํ•ด์ฃผ๋Š” ๊ฒƒ์€ SSL/TLS ํ”„๋กœํ† ์ฝœ ๋•๋ถ„์— ๊ฐ€๋Šฅํ•˜๋‹ค. ์•„๋ž˜์—์„œ ์ž์„ธํžˆ !


HTTPS๋Š” SSL/TLS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ธ์ฆ๊ณผ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

HTTPS๋Š” HTTP ํ†ต์‹ ์„ ํ•˜๋Š” ์†Œ์ผ“ ๋ถ€๋ถ„์—์„œ SSL/TLS ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„ ์ธ์ฆ๊ณผ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„์˜ CA๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ณผ์ •๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๋Š” ๊ณผ์ •์„ ์•„์šฐ๋ฅธ ํ”„๋กœํ† ์ฝœ์„ SSL ๋˜๋Š” TLS์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • HTTPS = HTTP + SSL/TLS ํ”„๋กœํ† ์ฝœ

(SSL์ด ํ‘œ์ค€ํ™”๋˜๋ฉฐ ๋ฐ”๋€ ์ด๋ฆ„์ด TLS๋กœ ์‚ฌ์‹ค์ƒ ๋™์ผํ•œ ํ”„๋กœํ† ์ฝœ๋กœ ๋ด๋„ ๋ฌด๋ฐฉํ•˜๋‹ค.)

SSL/TLS ํ”„๋กœํ† ์ฝœ์˜ ์„œ๋ฒ„์ธ์ฆ ๋ฐ ์•”ํ˜ธํ™” ๋ฐฉ์‹

- ๋Œ€์นญํ‚ค / ๋น„๋Œ€์นญํ‚ค ๋ฐฉ์‹์„ ์‚ฌ์šฉ


๋น„๋Œ€์นญํ‚ค - ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ํ™•๋ณดํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

  1. CA(๊ณต์ธ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ๊ธฐ๊ด€)์—์„œ ์„œ๋ฒ„์˜ ์‹ ์›์„ ๋ณด์ฆํ•˜๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•ด์ฃผ๋Š” ๊ณณ์ด๋‹ค.
  2. ์„œ๋ฒ„๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ ์œ„ํ•ด CA๋กœ <์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค + ์ •๋ณด> ๋ฅผ ์ „์†กํ•˜๋ฉฐ, CA๋Š” ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค์™€ ์ •๋ณด๋ฅผ ๋น„๋ฐ€ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰๋ฐ›๋Š”๋‹ค.
  3. ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ์„ ๋ฐ›์œผ๋ฉด CA์—๊ฒŒ ๋ฐœ๊ธ‰ ๋ฐ›์€ ์ธ์ฆ์„œ๋ฅผ ๋ณด๋‚ด์ค€๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” CA์˜ ๋ฆฌ์ŠคํŠธ์™€ ๊ณต๊ฐœํ‚ค๋ฅผ ๋‚ด์žฅํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ CA๊ฐ€ ๋ฐœ๊ธ‰ํ•œ ์ธ์ฆ์„œ๊ฐ€ ๋งž๋‹ค๋ฉด CA์˜ ๊ณต๊ฐœํ‚ค๋กœ ์ธ์ฆ์„œ์˜ ๋ณตํ˜ธํ™”๋ฅผ ์‹œ๋„ํ•œ๋‹ค.
  4. ๋ณตํ˜ธํ™”๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค๋ฉด ํ•ด๋‹น ์„œ๋ฒ„๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์ž„์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

๐Ÿ”‘ ๊ณต๊ฐœํ‚ค๋Š” ๋ณต์žกํ•œ ์—ฐ์‚ฐ์„ ํ•„์š”๋กœํ•ด ๋ณด์•ˆ์ด ํ™•์‹คํ•œ ๋ฐ˜๋ฉด์— ๋” ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋ชจํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.


๋Œ€์นญํ‚ค - ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์ฃผ๊ณ  ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ

HTTPS ์š”์ฒญ์„ ํ†ตํ•ด ์‹ค์งˆ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ •์—์„œ๋Š” ๋Œ€์นญํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

์ œ 3์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํƒˆ์ทจํ•˜์—ฌ๋„ ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋กœ ์ „์†ก๋˜์–ด ๋ณผ ์ˆ˜์—†๊ฒŒ๋˜์–ด ์•ˆ์ „ํ•œ HTTP์‘๋‹ต์„ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”‘๋Œ€์นญํ‚ค๋Š” ๊ณต๊ฐœํ‚ค(๋น„๋Œ€์นญํ‚ค) ๋ฐฉ์‹์— ๋น„ํ•ด ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.


HTTPS ๋ณด์•ˆ์ด ์ ์šฉ๋œ ์„œ๋ฒ„ ๊ตฌํ˜„ํ•˜๊ธฐ

mkcert๋ผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ด์šฉํ•ด์„œ ๋กœ์ปฌ ํ™˜๊ฒฝ(๋‚ด ์ปดํ“จํ„ฐ)์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

๋กœ์ปฌ์„ ์ธ์ฆ๋œ ๋ฐœ๊ธ‰ ๊ธฐ๊ด€์œผ๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค.

mkcert -install

๋กœ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ธ์ฆ์„œ ๋งŒ๋“ค๊ธฐ

  • localhost, 127.0.0.1(IPv4), ::1(IPv6)์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์ฆ์„œ๊ฐ€ ์™„์„ฑ๋˜์—ˆ๋‹ค.
  • cert.pem(๊ณต๊ฐœํ‚ค), key.pem(๊ฐœ์ธํ‚ค) ์ด๋ผ๋Š” ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ๋‹ค. ๊ฐœ์ธ ํ‚ค๋Š” ๋ง ๊ทธ๋Œ€๋กœ ๊ฐœ์ธ๋งŒ์ด ๊ฐ–๊ณ ์žˆ์–ด์•ผ ํ•˜๋Š” ํ‚ค ์ด๋ฏ€๋กœ ์™ธ๋ถ€์— ์œ ์ถœ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
mkcert -key-file key.pem -cert-file cert.pem localhost 127.0.0.1 ::1

์ƒ์„ฑํ•œ ์ธ์ฆ์„œ ํŒŒ์ผ๋“ค์„ 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! You made https server now :)');
    })
  )
  .listen(3001);

localhost:3001๋ฒˆ ํฌํŠธ๋กœ ์ ‘์† ํ›„ 'Congrats! You made https server now :)' ๋ฉ”์„ธ์ง€๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ์„ฑ๊ณต์ด๋‹ค !

profile
๊ธฐ๋ก์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„!

0๊ฐœ์˜ ๋Œ“๊ธ€