๋ชฉ์ฐจ
ย 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 |