HTTPS ํ†บ์•„๋ณด๊ธฐ

๊ด€๋ จ ํฌ์ŠคํŠธ
https://blog.naver.com/sssang97/223116073073

์ด๋ฒˆ์—๋Š” HTTPS ์„œ๋ฒ„๋ฅผ ์ง์ ‘ ๋„์›Œ๋ณด๊ณ , ๊ทธ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณธ๋‹ค.

HTTPS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ HTTP์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ณด์™„ํ•˜๊ณ ์ž ์ƒ๊ฒจ๋‚œ ํ”„๋กœํ† ์ฝœ์ธ๋ฐ,

์ด๋ ‡๊ฒŒ ์•ˆ์ „ํ•˜๋‹ค๊ณ  ๋œจ๋ฉด HTTPS๊ฐ€ ์ž˜ ์ ์šฉ๋œ ๊ฒƒ์ด๋‹ค.




HTTP์˜ ๋ฌธ์ œ

HTTP๋Š” ์ •๋ง ์ž˜ ๋™์ž‘ํ–ˆ๊ณ , ์›น ์„ธ๊ณ„๋ฅผ ์—ด์–ด์ฃผ๋Š”๋ฐ ํฌ๋‚˜ํฐ ์—ญํ• ์„ ํ•ด์คฌ์ง€๋งŒ, ์—ฌ๋Ÿฌ๋ชจ๋กœ ๋‹จ์ ๋„ ๋งŽ์•˜๋‹ค.
์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ํฐ ๋ณด์•ˆ์ทจ์•ฝ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋„คํŠธ์›Œํฌ ํŒจํ‚ท์ด ๊ฐ์ฒญ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ƒฅ ๋ฐ์ดํ„ฐ๊ฐ€ ํ‰๋ฌธ์œผ๋กœ๋งŒ ์™”๋‹ค๊ฐ”๋‹ค ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๊ฐ„์—์„œ ํŒจํ‚ท์„ ๊ฐ€๋กœ์ฑ„๋ฉด ๋ฐ”๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค...

"์Šค๋‹ˆํ•‘" ๋“ฑ์œผ๋กœ ๋Œ€ํ‘œ๋˜๋Š” ๋ณด์•ˆ ๊ณต๊ฒฉ๋“ค์ด ์ด๋Ÿฐ ํ—ˆ์ˆ ํ•œ ๋ถ€๋ถ„๋“ค์„ ๋…ธ๋ฆฐ ๊ฒƒ์ด๋‹ค.




TLS (SSL)

HTTPS๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ HTTP 1.1 ์œ„์— TLS๋ผ๋Š” ๋ ˆ์ด์–ด๋ฅผ ์ถ”๊ฐ€๋กœ ์˜ฌ๋ฆฐ ํ˜•ํƒœ๋กœ ๋™์ž‘ํ•œ๋‹ค.

https://velog.io/@moonyoung/HTTPS%EC%9D%98-%EC%9B%90%EB%A6%AC
TLS๊ฐ€ ๋ญ๋ƒ ํ•˜๋ฉด, ํ‰๋ฌธ์œผ๋กœ ๋ณด๋‚ด์ง€๋˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ ๋ณด๋‚ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์•Œ์•„๋‘ฌ์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์€ Private Keyํ•˜๋‚˜๋กœ ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”๋ฅผ ์ „๋ถ€ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๋‹ค.

๊ณต๊ฐœํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ๋Š” ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๊ฑด ์•”ํ˜ธํ™”ํ• ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์™€ ๋ณตํ˜ธํ™”ํ• ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๊ฐ€ ๋‹ค๋ฅด๋‹ค.

์•”ํ˜ธํ™”ํ• ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๋ฅผ publicKey๋ผ๊ณ  ํ•ด์„œ ๋ชจ๋‘๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ณต๊ฐœํ•˜๊ณ , ๋ณตํ˜ธํ™”ํ• ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๋ฅผ privateKey๋ผ๊ณ  ํ•ด์„œ ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ ์ฃผ์ธ๋งŒ ๊ฐ–๊ณ  ์žˆ๊ฒŒ ํ•œ๋‹ค.
๊ทธ๋ž˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ ์•”ํ˜ธํ™”๋œ ํŒจํ‚ท์„ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

https://gaeko-security-hack.tistory.com/123
ํ‰๋ฌธ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฑธ ๊ฐ€๋กœ์ฑ„๋”๋ผ๋„ ๊ณต๊ฒฉ์ž๋Š” ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ์จ๋จน์„ ์ˆ˜๊ฐ€ ์—†๋‹ค.





CA์™€ ์ธ์ฆ์„œ

TLS๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ํ†ตํ•ด์„œ ๋ˆ„๊ตฌ๋‚˜ ์•”ํ˜ธํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ์—ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ๊ณต๊ฐœํ‚ค๋Š” ๋ˆ„๊ฐ€ ๋“ค๊ณ ์žˆ๊ณ  ๋ˆ„๊ฐ€ ์ฃผ๋Š”๊ฑธ๊นŒ?

์•„๋ฌด๋„ ์—†์ด ์ด๊ฑธ ํ•ด์ค„ ์ˆ˜๋Š” ์—†์œผ๋‹ˆ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰๊ธฐ๊ด€(Certificate Authority:CA)์ด ๋”ฐ๋กœ ํ•„์š”ํ•˜๋‹ค.
๋ณดํ†ต์€ ๋ˆ์ฃผ๊ณ  ์จ์•ผํ•˜๋Š”๋ฐ, ์š”์ƒˆ Cloudflare๋‚˜ AWS ๊ฐ™์€ ๋ฉ”์ด์ €ํ•œ ๋ฐœ๊ธ‰๊ธฐ๊ด€์—์„œ๋Š” ๋„๋ฉ”์ธ์„ ์‚ฌ๋ฉด ๋ณ„๋„ ๋น„์šฉ์—†์ด ์ธ์ฆ์„œ๊นŒ์ง€ ์ œ๊ณต์„ ํ•ด์ค€๋‹ค.

๋ฏฟ์„๋งŒํ•œ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰๊ธฐ๊ด€์€ ๋‹ค ์ •ํ•ด์ ธ์žˆ์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์‹ ๋ขฐํ•˜๋Š” ์ธ์ฆ์„œ ๋ฐœ๊ธ‰๊ธฐ๊ด€์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ข€ ๋น„์‹ธ๋”๋ผ๋„ ๋Œ€์ค‘์ ์ด๊ณ  ๋ฏฟ์„๋งŒํ•œ ๋ฐœ๊ธ‰์ฒ˜๋ฅผ ์“ฐ๋Š”๊ฒŒ ์ข‹๋‹ค. ์•ˆ๊ทธ๋Ÿฌ๋ฉด SSL ์ž˜ ๋ถ™์—ฌ๋†“๊ณ ๋„ ๋ธŒ๋ผ์šฐ์ €์— ์œ„ํ—˜ํ•˜๋‹ค๊ณ  ๋œฐ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋””์Šค์ฝ”๋“œ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•ด๋ณด๋ฉด

์ด๋ ‡๊ฒŒ cloudflare๋ฅผ ํ†ตํ•ด์„œ TLS ์ธ์ฆ์„ ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ €๊ฒŒ CA๊ฐ€ ํ•ด์ฃผ๋Š” ์—ญํ• ์ด๋‹ค.




์ธ์ฆ์„œ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ (Cloudflare)

์šฐ์„  ์ธ์ฆ์„œ์™€ privatekey ์Œ์ด ํ•„์š”ํ•˜๋‹ค.
๋‚˜๋Š” cloudflare๋ฅผ ์ด๋ฏธ ์“ฐ๊ณ  ์žˆ๊ธฐ๋•Œ๋ฌธ์—, cloudflare๋กœ ํ•ด๋ณด๊ฒ ๋‹ค.

์ ๋‹นํžˆ ์ด๋ ‡๊ฒŒ ๋ฐœ๊ธ‰๋ฐ›์•„์„œ

ํŒŒ์ผ๋กœ ์ €์žฅํ•ด๋‘”๋‹ค.

๊ทธ๋ฆฌ๊ณ  cloudflare์šฉ ๊ณต์šฉ ์ธ์ฆ์„œ ์ฒด์ธ์„ ๋˜ ํŒŒ์ผ๋กœ ์ €์žฅํ•ด๋‘”๋‹ค.

-----BEGIN CERTIFICATE-----
MIIEADCCAuigAwIBAgIID+rOSdTGfGcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNV
BAYTAlVTMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTQwMgYDVQQLEytDbG91
ZEZsYXJlIE9yaWdpbiBTU0wgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMRMwEQYDVQQIEwpDYWxpZm9ybmlhMB4XDTE5MDgyMzIx
MDgwMFoXDTI5MDgxNTE3MDAwMFowgYsxCzAJBgNVBAYTAlVTMRkwFwYDVQQKExBD
bG91ZEZsYXJlLCBJbmMuMTQwMgYDVQQLEytDbG91ZEZsYXJlIE9yaWdpbiBTU0wg
Q2VydGlmaWNhdGUgQXV0aG9yaXR5MRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRMw
EQYDVQQIEwpDYWxpZm9ybmlhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAwEiVZ/UoQpHmFsHvk5isBxRehukP8DG9JhFev3WZtG76WoTthvLJFRKFCHXm
V6Z5/66Z4S09mgsUuFwvJzMnE6Ej6yIsYNCb9r9QORa8BdhrkNn6kdTly3mdnykb
OomnwbUfLlExVgNdlP0XoRoeMwbQ4598foiHblO2B/LKuNfJzAMfS7oZe34b+vLB
yrP/1bgCSLdc1AxQc1AC0EsQQhgcyTJNgnG4va1c7ogPlwKyhbDyZ4e59N5lbYPJ
SmXI/cAe3jXj1FBLJZkwnoDKe0v13xeF+nF32smSH0qB7aJX2tBMW4TWtFPmzs5I
lwrFSySWAdwYdgxw180yKU0dvwIDAQABo2YwZDAOBgNVHQ8BAf8EBAMCAQYwEgYD
VR0TAQH/BAgwBgEB/wIBAjAdBgNVHQ4EFgQUJOhTV118NECHqeuU27rhFnj8KaQw
HwYDVR0jBBgwFoAUJOhTV118NECHqeuU27rhFnj8KaQwDQYJKoZIhvcNAQELBQAD
ggEBAHwOf9Ur1l0Ar5vFE6PNrZWrDfQIMyEfdgSKofCdTckbqXNTiXdgbHs+TWoQ
wAB0pfJDAHJDXOTCWRyTeXOseeOi5Btj5CnEuw3P0oXqdqevM1/+uWp0CM35zgZ8
VD4aITxity0djzE6Qnx3Syzz+ZkoBgTnNum7d9A66/V636x4vTeqbZFBr9erJzgz
hhurjcoacvRNhnjtDRM0dPeiCJ50CP3wEYuvUzDHUaowOsnLCjQIkWbR7Ni6KEIk
MOz2U0OBSif3FTkhCgZWQKOOLo1P42jHC3ssUZAtVNXrCk3fw9/E15k8NPkBazZ6
0iykLhH1trywrKRMVw67F44IE8Y=
-----END CERTIFICATE-----

์ด๊ฑด cloudflare ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•œ ์ „์šฉ ์ธ์ฆ์„œ๋ผ์„œ, ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๋ฐ›์•„์ฃผ์ง€ ์•Š๋Š”๋‹ค.




HTTPS ์ ์šฉํ•ด๋ณด๊ธฐ (Express.js + Cloudflare)

์ €๊ฒƒ๋“ค์„ ๊ฐ€์ ธ๋‹ค๊ฐ€ HTTPS ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.

์•„๋ž˜๋Š” ๊ทธ์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ ์ฝ”๋“œ๋‹ค.

const Express = require('express');
const https = require('https'); 
const fs = require('fs');

var sslOptions = {
    ca: fs.readFileSync('chain'),
    key: fs.readFileSync('privatekey'),
    cert: fs.readFileSync('certificate'),
  };

const app = Express()
app.get('/', (req, res)=>{
    res.json('OK')
});

app.listen(80, ()=>{
    console.log('HTTP Server is running')
})

https.createServer(sslOptions, app, (req, res) => {})
    .listen(443, () => {
        console.log('HTTPS Server is running')
    });

๊ธฐ์กด HTTP ์„œ๋ฒ„๋Š” HTTP ์„œ๋ฒ„๋Œ€๋กœ ๋„์šฐ๊ณ , https ๋ชจ๋“ˆ์„ ์ด์šฉํ•ด์„œ HTTPS ์„œ๋ฒ„๋„ ๋„์› ๋‹ค.

๊ทธ๋ฆฌ๊ณ  cloudflare ๋„๋ฉ”์ธ ๊ด€๋ฆฌ์—์„œ ์ € IP๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , "ํ”„๋ก์‹ฑ" ๋ชจ๋“œ๋กœ ํ•ด์ค€๋‹ค.

์ด ๊ฒฝ์šฐ์—๋Š” ํ”„๋ก์‹ฑ ๋ชจ๋“œ๋กœ ํ•ด์ค˜์•ผ๋งŒ cloudflare ํŠธ๋ž˜ํ”ฝ์„ ํƒ€์„œ ์ธ์ฆ์„œ ์ฒด์ธ์„ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ €๋ ‡๊ฒŒ ํ•ด์„œ ๋“ค์–ด๊ฐ€๋ณด๋ฉด

์ž˜ ๋  ๊ฒƒ์ด๊ณ 


์ž˜ ๋  ๊ฒƒ์ด๋‹ค.

์—ฌ๊ธฐ์—์„œ๋Š” ๊ฐ„๋‹จํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ express์— ์ง์ ‘ ๋ถ™์˜€์ง€๋งŒ, ์ข‹์€ ํŒจํ„ด์€ ์•„๋‹ˆ๋‹ค.
์‹ค์ œ๋กœ๋Š” ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ๋“ฑ์— ๋ถ™์—ฌ์„œ ์“ธ ์ผ์ด ๋” ๋งŽ์„ ๊ฒƒ์ด๋‹ค.



์ฐธ์กฐ
https://www.cryptomathic.com/news-events/blog/encryption-https-attack-on-authentication-in-remote-banking-services-a-russian-perspective
https://community.cloudflare.com/t/https-certificate-not-trusted/3610/11
https://devonperoutky.super.site/blog-posts/mediocre-engineers-guide-to-https