Search

[CKA] 39. TLS Basic

Date
2025/01/09
Category
Devops
Tag
Kubernetes
CKA
Security
๋ชฉ์ฐจ

ย TLS Certificates

์‚ฌ์šฉ์ž๊ฐ€ ์›น ์„œ๋ฒ„์— ์•ก์„ธ์Šคํ•˜๋ ค ํ•  ๋•Œ TLS ์ธ์ฆ์„œ๋Š” ์‚ฌ์šฉ์ž์™€ ์„œ๋ฒ„ ์‚ฌ์ด์˜ ํ†ต์‹ ์ด ์•”ํ˜ธํ™”ํ•˜๊ณ , ์„œ๋ฒ„์˜ ์‹ ์›์„ ํ™•์ธํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์™€ ์—ฐ๊ฒฐ๋˜๋„๋ก ํ•œ๋‹ค.

Senario

ํ•œ ์œ ์ €๊ฐ€ ์˜จ๋ผ์ธ ๋ฑ…ํ‚น ์•ฑ์— ์ ‘์†ํ•  ๋•Œ ์•”ํ˜ธํ™”๊ฐ€ ์žˆ์„ ๋•Œ์™€ ์—†์„ ๋•Œ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‚ดํŽด๋ณด์ž

ย Without Secure connectivity

์•ˆ์ „ํ•œ ์—ฐ๊ฒฐ์„ฑ์ด ์—†์œผ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ž๊ฒฉ ์ฆ๋ช…์ด ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ์ „์†ก๋œ๋‹ค. ์ด๋•Œ ํ•ด์ปค๊ฐ€ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ์„ ํƒ์ง€ํ•˜๋ฉด(sniffing) ์ž๊ฒฉ์ฆ๋ช…์„ ์‰ฝ๊ฒŒ ์ถ”์ถœํ•ด ์‚ฌ์šฉ์ž์˜ ์€ํ–‰ ๊ณ„์ขŒ๋ฅผ ํ•ดํ‚ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

ย With Secure Connectivity

ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•œ๋‹ค. ํ‚ค๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž„์˜์˜ ์ˆซ์ž์™€ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ์ด๋ค„์ ธ ์žˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ๋ฐ์ดํ„ฐ์— ์ถ”๊ฐ€ํ•˜๊ณ , ์ด๋ฅผ ์ธ์‹ํ•  ์ˆ˜ ์—†๋Š” ํ˜•์‹์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค. ํ•ด์ปค๊ฐ€ ๋„คํŠธ์›Œํฌ๋ฅผ ํƒ์ง€ํ•˜๋”๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ์•”ํ˜ธํ™”๊ฐ€ ๋˜์–ด์žˆ์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ์„œ๋ฒ„๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ํ‚ค ์—†์ด๋Š” ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค์˜ ์‚ฌ๋ณธ๋„ ์„œ๋ฒ„์— ์ „์†กํ•ด์•ผ ํ•œ๋‹ค. ์ด๋•Œ ํ•ด์ปค๊ฐ€ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๋‹ค๋Š” ์œ„ํ—˜์ด ์žˆ๋‹ค.
์ด๋ฅผ Symmetric Encryption(๋Œ€์นญ ์•”ํ˜ธํ™”)๋ผ๊ณ  ํ•œ๋‹ค. ์•ˆ์ „ํ•œ ์•”ํ˜ธํ™” ๋ฐฉ์‹์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ์•”ํ˜ธํ™”์™€ ๋ณตํ˜ธํ™”์— ๋Œ€ํ•œ ๋™์ผํ•œ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ด ํ‚ค๊ฐ€ ์†ก์‹ ์ž์™€ ์ˆ˜์‹ ์ž ๊ฐ„์— ๊ตํ™˜๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ ํ•ด์ปค๊ฐ€ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์œ„ํ—˜์ด ์žˆ๋‹ค.

ย Asymmetric Encryption

๋น„๋Œ€์นญ ์•”ํ˜ธํ™”๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋ณตํ˜ธํ™”ํ•˜๋Š” ๋ฐ ๋‹จ์ผํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹ , ๊ฐœ์ธ ํ‚ค(private key)์™€ ๊ณต๊ฐœ ํ‚ค(public key)๋กœ, ํ•œ ์Œ์˜ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
๊ฐœ์ธ ํ‚ค = ์—ด์‡ , ๊ณต๊ฐœ ํ‚ค = ์ž๋ฌผ์‡ ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ž๋ฌผ์‡ ์—๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ด๋ฅผ ์—ด ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ณธ์ธ์ด ๊ฐ€์ง„ ์—ด์‡ ๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

Use Case - SSH

Password๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์œ„ํ—˜์„ฑ์ด ๋”ฐ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ํ‚ค ํŽ˜์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ SSH ์•ก์„ธ์Šค๋ฅผ ๋ณด์•ˆํ•˜๊ณ ์ž ํ•œ๋‹ค. ํ‚ค ํŽ˜์–ด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ssh-keygen ๋ช…๋ น์„ ์‹คํ–‰ํ•œ๋‹ค. ํ•ด๋‹น ๋ช…๋ น์€ ๊ฐœ์ธ ํ‚ค๋กœ id_rsa๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ณต๊ฐœ ํ‚ค๋กœ id_rsa.pub๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ ์„œ๋ฒ„์˜ ๋ชจ๋“  ์ ‘๊ทผ์„ ์ฐจ๋‹จํ•˜๊ณ , ๊ณต๊ฐœ ํ‚ค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„œ๋ฒ„๋ฅผ ๋ณดํ˜ธํ•œ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋ฒ„์˜ ~/.ssh/authorized_keys ํŒŒ์ผ์— ๊ณต๊ฐœ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ์ด๋ค„์ง„๋‹ค. ์ด์ œ SSH์— ๋ˆ„๊ตฌ๋‚˜ ๊ณต๊ฐœ ํ‚ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ฐœ์ธ ํ‚ค๋Š” ๋ณธ์ธ๋งŒ (๋…ธํŠธ๋ถ ๋“ฑ์—) ๋ณด๊ด€ํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ˆ„๊ตฌ๋„ ์„œ๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
SSH์— ๋Œ€ํ•œ ๋™์ผํ•œ ๊ฐœ์ธ ํ‚ค๋ฅผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์„œ๋ฒ„๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ณต๊ฐœ ํ‚ค ์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด ์›ํ•˜๋Š” ๋งŒํผ ์„œ๋ฒ„์— ๋‘์–ด ์ ‘๊ทผ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋ฒ„์— ์ ‘๊ทผํ•ด์•ผ ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ํ‚ค ํŽ˜์–ด ์ค‘ ๊ณต์šฉ ํ‚ค๋ฅผ ~/.ssh/authorized_keys์— ์ถ”๊ฐ€ํ•˜๋ฉด ์ ‘์†์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

With Symmetric Encryption

โ–ถ๏ธย With Secure Connectivity ์—์„œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•”ํ˜ธํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ์ง€๋งŒ ์„œ๋ฒ„์—๊ฒŒ ํ‚ค๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ–ˆ๊ณ , ์ด ๊ณผ์ •์—์„œ ํ•ด์ปค ๋˜ํ•œ ํ‚ค๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. Symmetric๊ณผ Asymmetric Encryption์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
1.
์„œ๋ฒ„์—์„œ ํ‚ค ํŽ˜์–ด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
# ๊ฐœ์ธ ํ‚ค ์ƒ์„ฑ: openssl genrsa -out [pri-keyname] [key-length] openssl genrsa -out my-bank.key 1024 # ๊ณต๊ฐœ ํ‚ค ์ƒ์„ฑ: openssl rsa -in [pri-keyname] -pubout > [pub-keyname] openssl rsa -in my-bank.key -pubout > mybank.pem
Bash
๋ณต์‚ฌ
โ€ข
key-length: ํ‚ค์˜ ๋น„ํŠธ ๊ธธ์ด๋ฅผ ์ง€์ •ํ•œ๋‹ค. RSA์˜ ๊ฒฝ์šฐ์—๋Š” ์ตœ์†Œ 2048๋น„ํŠธ ์ด์ƒ์„ ๊ถŒ์žฅํ•œ๋‹ค.
2.
HTTPS๋กœ ์›น ์„œ๋ฒ„ ์•ก์„ธ์Šค
โ€ข
์‚ฌ์šฉ์ž๊ฐ€ HTTPS๋ฅผ ํ†ตํ•ด ์›น ๋ฒ„์„œ์— ์ฒ˜์Œ ์•ก์„ธ์Šคํ•˜๋ฉด ์„œ๋ฒ„์—์„œ ๊ณต๊ฐœ ํ‚ค๋ฅผ ๋ฐ›๊ฒŒ ๋œ๋‹ค.
โ€ข
ํ•ด์ปค๋„ ๋„คํŠธ์›Œํฌ๋ฅผ ์Šค๋‹ˆํ•‘ํ•˜๊ณ  ์žˆ์–ด ๊ณต๊ฐœ ํ‚ค๋ฅผ ๋ฐ›๋Š”๋‹ค.
3.
Symmetric Encryption
โ€ข
์œ ์ €์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋ฐ›์€ ๊ณต๊ฐœ ํ‚ค๋ฅผ ํ†ตํ•ด ๋Œ€์นญ ํ‚ค(symmetric key)๋ฅผ ์•”ํ˜ธํ™”ํ•œ๋‹ค.
4.
์•”ํ˜ธํ™”๋œ symmetric key ์ „์†ก
โ€ข
์•”ํ˜ธํ™”ํ•œ ๋Œ€์นญ ํ‚ค๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†กํ•œ๋‹ค.
โ€ข
์ด ๊ณผ์ •์—์„œ ํ•ด์ปค๋„ ํ•ด๋‹น ๋ณต์‚ฌ๋ณธ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
5.
๋ณตํ˜ธํ™”
โ€ข
์„œ๋ฒ„๋Š” ๊ณต๊ฐœ ํ‚ค(์ž๋ฌผ์‡ )์— ๋Œ€ํ•œ ๊ฐœ์ธ ํ‚ค๊ฐ€ ์กด์žฌํ•˜์—ฌ ์œ ์ €๊ฐ€ ์•”ํ˜ธํ™”ํ•œ ๋Œ€์นญ ํ‚ค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
โ€ข
ํ•˜์ง€๋งŒ ํ•ด์ปค๋Š” ๊ฐœ์ธ ํ‚ค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ณตํ˜ธํ™”๋Š” ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ•œ๋‹ค.
โ€ข
์ด๋กœ์จ ๋Œ€์นญ ํ‚ค๋Š” ์‚ฌ์šฉ์ž์™€ ์„œ๋ฒ„๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
6.
๋ฐ์ดํ„ฐ ์ „๋‹ฌ
โ€ข
์ด์ œ ์‚ฌ์šฉ์ž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„์—์„œ๋Š” ๋Œ€์นญ ํ‚ค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข
ํ•ด์ปค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณตํ˜ธํ™”ํ•˜์ง€ ๋ชปํ•ด ํ™•์ธํ•  ์ˆ˜ ์—†๋‹ค.
์ •๋ฆฌํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
โ€ข
์‚ฌ์šฉ์ž๊ฐ€ HTTPS๋กœ ์ ‘์†ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๊ณต๊ฐœ ํ‚ค๋ฅผ ์ „๋‹ฌ
โ€ข
์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๊ณต๊ฐœ ํ‚ค๋กœ ๋Œ€์นญ ํ‚ค ์•”ํ˜ธํ™”
โ€ข
์„œ๋ฒ„์—์„œ ๊ฐœ์ธ ํ‚ค๋ฅผ ํ†ตํ•ด ๋ณตํ˜ธํ™”ํ•˜์—ฌ ๋Œ€์นญ ํ‚ค ํ™•๋ณด
โ€ข
์‚ฌ์šฉ์ž๊ฐ€ ๋Œ€์นญ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด ์•”ํ˜ธํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ์„œ๋ฒ„๋Š” ๊ฐ™์€ ๋Œ€์นญ ํ‚ค๋กœ ๋ณตํ˜ธํ™”
โ€ข
ํ•ด์ปค๋Š” ์‚ฌ์šฉ์ž์™€ ์„œ๋ฒ„๋กœ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ๊ฐ€๋กœ์ฑ„์ง€๋งŒ ๊ฐœ์ธ ํ‚ค์˜ ๋ถ€์žฌ๋กœ ๋ณตํ˜ธํ™”ํ•˜์ง€ ๋ชปํ•จ

ย Certificate

Senario

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

Certificate

์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์„œ๋ฒ„๊ฐ€ ํ‚ค๋ฅผ ํ˜ผ์ž ๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ‚ค๋ฅผ ๊ฐ€์ง„ ์ธ์ฆ์„œ๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ์ธ์ฆ์„œ๋Š” ์ธ์ฆ์„œ๊ฐ€ ๋ฐœ๊ธ‰๋œ ์ฃผ์ฒด์— ๋Œ€ํ•œ ์ •๋ณด, ํ•ด๋‹น ์„œ๋ฒ„์˜ ๊ณต๊ฐœ ํ‚ค, ์„œ๋ฒ„์˜ ์œ„์น˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ๋‹ค. ๋ชจ๋“  ์ธ์ฆ์„œ์—๋Š” ์ด๋ฆ„(name)์ด ์žˆ์œผ๋ฉฐ, ์ด๋Š” ์ธ์ฆ์„œ๊ฐ€ ๋ฐœ๊ธ‰๋˜๋Š” ์‚ฌ๋žŒ์ด๋‚˜ ์ฃผ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ์— ์‹ ์›์„ ํ™•์ธํ•˜๋Š”๋ฐ ์žˆ์–ด ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.
์›น ์„œ๋ฒ„์— ๋Œ€ํ•œ ์ธ์ฆ์„œ๋ผ๋ฉด ์ด๋ฆ„(name)์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์˜ URL์— ์ž…๋ ฅํ•œ ๊ฒƒ๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์€ํ–‰์ด ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ๋„ ์•Œ๋ ค์ ธ ์žˆ๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๋ฉด, ๋ชจ๋“  ์ด๋ฆ„์„ ์ธ์ฆ์„œ์˜ Subject ํ•„๋“œ ์•„๋ž˜ Alternative Name ์„น์…˜์— ์ง€์ •๋˜์–ด์•ผ ํ•œ๋‹ค.

Sign

ํ•˜์ง€๋งŒ ์ธ์ฆ์„œ๋Š” ๋ˆ„๊ตฌ๋‚˜ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ฆ์„œ๊ฐ€ ์ง„ํ’ˆ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ธ์ฆ์„œ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด๋‹ค. ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ง์ ‘ ์„œ๋ช…์„ ํ•ด์•ผ ํ•˜๊ณ , ์ด๋ฅผ self-signed certificated ๋ผ๊ณ  ํ•œ๋‹ค.
๋ชจ๋“  ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์ธ์ฆ์„œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ(Certificate Validation) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ํ…์ŠคํŠธ์—์„œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ธ์ฆ์„œ๋ฅผ ๋ฐ›์•„ ์ธ์ฆ์„œ๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค. ์ธ์ฆ์„œ๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•œ๋‹ค.

ย Certificate Authority (CA)

์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹ ๋ขฐํ•  ์›น์„œ๋ฒ„ ์ธ์ฆ์„œ๋Š” ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค๊นŒ? ๊ถŒํ•œ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์ธ์ฆ์„œ์— ์„œ๋ช…์„ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?
์ด๋•Œ CA๊ฐ€ ๋“ฑ์žฅํ•œ๋‹ค. CA๋Š” ์šฐ๋ฆฌ๋ฅผ ๋Œ€์‹ ํ•ด ์šฐ๋ฆฌ์˜ ์ธ์ฆ์„œ์— ์‚ฌ์ธํ•˜๊ณ  ๊ฒ€์ฆ์„ ํ•ด์ฃผ๋Š” ๊ธฐ๊ด€์ด๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” Symantec, DigiCert, Comodo, GlobalSign ๋“ฑ์ด ์žˆ๋‹ค.

Sign Certificates

1.
CSR: ์ด์ „์— ์ƒ์„ฑํ•œ ํ‚ค์™€ ์›น์‚ฌ์ดํŠธ์˜ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ ์„œ๋ช… ์š”์ฒญ(CSR, Certificate Signing Request)์„ ์ƒ์„ฑํ•œ๋‹ค. OpenSSL ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .csr ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. CSR ํŒŒ์ผ์€ CA์— ์„œ๋ช…์„ ์š”์ฒญํ•˜๊ธฐ ์œ„ํ•ด ์ „์†ก๋˜์–ด์•ผ ํ•œ๋‹ค.
# openssl req -new -key [๊ฐœ์ธ ํ‚ค ํŒŒ์ผ] -out [์ƒ์„ฑํ•  CSR ํŒŒ์ผ] -subj "/CN=[๋„๋ฉ”์ธ ์ด๋ฆ„]" openssl req -new -key my-bank.key -out my-back.csr \ -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=my-bank.com"
Bash
๋ณต์‚ฌ
2.
Validate Infromation: CA์—์„œ๋Š” ์ œ์ถœ๋œ ์ •๋ณด์˜ ์ง„์œ„๋ฅผ ํ™•์ธํ•œ๋‹ค. CA๋Š” ์‹ค์ œ ๋„๋ฉ”์ธ์˜ ์†Œ์œ ์ž๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ๊ธฐ๋ฒ•๋“ค์„ ์‚ฌ์šฉํ•œ๋‹ค.
3.
Sign and Send Certificate: ํ™•์ธ์ด ์™„๋ฃŒ๋˜๋ฉด CA๋Š” ์ธ์ฆ์„œ์— ์„œ๋ช…์„ ํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
ํ•ด์ปค๊ฐ€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ธ์ฆ์„œ์— ์„œ๋ช…์„ ๋ฐ›์œผ๋ ค ํ•˜๋ฉด ๊ฒ€์ฆ ๋‹จ๊ณ„๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•ด CA์—๊ฒŒ ๊ฑฐ๋ถ€๋œ๋‹ค.

How Browsers Verify CA Legitimacy

CA ์ž์ฒด๋„ pub-pri ํ‚ค ํŽ˜์–ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. CA๋Š” ์ธ์ฆ์„œ์— ์„œ๋ช…์„ ํ•  ๋•Œ ๊ฐœ์ธํ‚ค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ชจ๋“  CA์˜ ๊ณต๊ฐœ ํ‚ค๋Š” ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š”๋ฐ, ๋ธŒ๋ผ์šฐ์ €๋Š” CA์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ๊ฐ€ ์‹ค์ œ๋กœ CA์— ์˜ํ•ด ์„œ๋ช…๋˜์—ˆ์Œ์„ ๊ฒ€์ฆํ•œ๋‹ค.
๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋œ CA๋Š” ๊ณต๊ณต ์›น์‚ฌ์ดํŠธ(์˜ˆ: ์€ํ–‰, ์ด๋ฉ”์ผ ๋“ฑ)์˜ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜์ง€๋งŒ, ์กฐ์ง ๋‚ด๋ถ€์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” ์‚ฌ์ดํŠธ์˜ ๊ฒ€์ฆ์—๋Š” ๋„์›€๋˜์ง€ ์•Š๋Š”๋‹ค. ๋”ฐ๋ผ์„œ ๋‚ด๋ถ€์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐœ์ธ CA๋ฅผ ํ˜ธ์ŠคํŒ…ํ•ด์•ผ ํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ CA๊ฐ€ ๋‚ด๋ถ€์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” CA ์„œ๋ฒ„ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ด๋กœ์จ ์กฐ์ง์›๋“ค์€ ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด๋ถ€ CA ์„œ๋ฒ„์˜ ๊ณต๊ฐœ ํ‚ค๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์กฐ์ง ๋‚ด์—์„œ ์•ˆ์ „ํ•œ ์—ฐ๊ฒฐ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.

ย Summary

๊ฐ ํ‚คํŽ˜์–ด์— ๋Œ€ํ•ด ์ƒ‰์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ์–ด๋””์— ์œ„์น˜ํ•ด์žˆ๋Š”์ง€ ์ •๋ฆฌํ•˜๋ฉฐ ํ‘œํ˜„ํ•ด๋ณด์•˜๋‹ค
1.
๊ด€๋ฆฌ์ž๋Š” ํ•œ ์Œ์˜ ํ‚ค๋กœ ์„œ๋ฒ„์˜ SSH ์—ฐ๊ฒฐ ๋ณด์•ˆ
โ€ข
์„œ๋ฒ„ - Pub
โ€ข
๊ด€๋ฆฌ์ž - Pri
2.
์„œ๋ฒ„๋Š” ๋˜ ๋‹ค๋ฅธ ํ‚คํŽ˜์–ด๋ฅผ ํ†ตํ•ด HTTPS ํŠธ๋ž˜ํ”ฝ ํ™•๋ณด
โ€ข
์„œ๋ฒ„ - Pub, Pri
3.
์ด๋•Œ HTTPS ์ธ์ฆ์„ ์œ„ํ•ด ์„œ๋ฒ„๋Š” CA์— ์ธ์ฆ์„œ ์„œ๋ช… ์š”์ฒญ์„ ๋ณด๋ƒ„ (CSR์€ ๊ฐœ์ธ ํ‚ค๋กœ ์•”ํ˜ธํ™”)
โ€ข
์„œ๋ฒ„ - Pub, Pri
โ€ข
CA - CSR(Pub), Pub, Pri
4.
CA๋Š” ๊ฐœ์ธ ํ‚ค๋กœ CSR์— ์„œ๋ช…ํ•˜์—ฌ ์ธ์ฆ์„œ๋ฅผ ์„œ๋ฒ„๋กœ ์ „์†ก ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋กœ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ
โ€ข
์„œ๋ฒ„ - Pub, Pri, CERT(Pub)
5.
์‚ฌ์šฉ์ž๊ฐ€ ์›น ์„œ๋ฒ„์— ์•ก์„ธ์Šคํ•  ๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„๋Š” ๊ณต๊ฐœ ํ‚ค๋ฅผ ๋‹ด์€ ์ธ์ฆ์„œ๋ฅผ ๋ณด๋ƒ„
โ€ข
์‚ฌ์šฉ์ž - Pub, CERT(Pub)
6.
๋ธŒ๋ผ์šฐ์ €๋Š” ์ธ์ฆ์„œ๋ฅผ ์ฝ๊ณ  ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์–ป๊ธฐ ์œ„ํ•ด CA ๊ณต๊ฐœํ‚ค๋ฅผ ์‚ฌ์šฉ
โ€ข
์‚ฌ์šฉ์ž - Symm Key, Pub, Pub
7.
์‚ฌ์šฉ์ž๋Š” ์„œ๋ฒ„์˜ ๊ณต๊ฐœํ‚ค๋กœ ๋Œ€์นญํ‚ค๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ ์„œ๋ฒ„๋กœ ์ „์†ก
โ€ข
์„œ๋ฒ„ - Pub, Pri, CERT(Pub), Pub(Symm Key)
โ€ข
์‚ฌ์šฉ์ž - Symm Key, Pub, Pub
8.
์„œ๋ฒ„๋Š” ๊ฐœ์ธํ‚ค๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ํ•ด๋…ํ•˜๊ณ  ๋Œ€์นญํ‚ค๋ฅผ ์–ป์Œ ์ด ๋Œ€์นญํ‚ค๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์™€ ํ†ต์‹ ์„ ์ด์–ด๊ฐ
โ€ข
์„œ๋ฒ„ - Pub, Pri, CERT(Pub), Symm Key
โ€ข
์‚ฌ์šฉ์ž - Symm Key, Pub, Pub

Extra

TLS Client Certification

ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์œ ํšจ์„ฑ์„ ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•˜๋Š”๋ฐ, ๋ฐ˜๋Œ€๋กœ ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„๊นŒ? ํ™•์ธ์˜ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ, ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ CA๋กœ๋ถ€ํ„ฐ ์„œ๋ช…๋œ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ฒ„์—๊ฒŒ ์ธ์ฆ์„œ๋ฅผ ๋ณด๋‚ด ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ์ด๋ค„์ง€๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
์›น ์„œ๋ฒ„์—์„œ๋Š” TLS ํด๋ผ์ด์–ธํŠธ ์ธ์ฆ์„œ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ตฌํ˜„๋˜์ง€ ์•Š์•„ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ํ•˜์ง€๋งŒ ํ˜ธ์ŠคํŠธ ๋‚ด์—์„œ๋Š” ๋ชจ๋‘ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

PKI

CA, ์„œ๋ฒ„, ๋””์ง€ํ„ธ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ธํ”„๋ผ๋ฅผ Public Key Infrastructure๋ผ๊ณ  ํ•œ๋‹ค.

Key Pair

๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ํ‚ค ํŽ˜์–ด๋ฟ๋งŒ์ด ์•„๋‹ˆ๋‹ค.
๊ฐœ์ธ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๊ณต๊ฐœ ํ‚ค๋ฅผ ๊ฐ€์ง„ ๋ˆ„๊ตฌ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ฐ˜๋Œ€๋กœ ๊ณต๊ฐœ ํ‚ค๋กœ ์•”ํ˜ธํ™”ํ•œ ๋ฐ์ดํ„ฐ๋Š” ๊ฐœ์ธ ํ‚ค๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณตํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

Naming Convention

๊ฐœ์ธ ํ‚ค๋Š” ์ด๋ฆ„์ด๋“  ํ™•์žฅ์ž๋“  key๋ผ๋Š” ๋‹จ์–ด๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ์ผ๋ฐ˜ ๊ณต์šฉํ‚ค๋‚˜ ์ธ์ฆ์„œ๋Š” ๊ทธ๋ ‡์ง€ ์•Š๋‹ค.
Certificate (Public Key) *.crt *.pem
Private Key *.key *-key.pem
server.crt server.pem client.crt client.pem
server.key server-key.pem client.key client-key.pem