[aws] SSL ์ธ์ฆ ๋ฐ ์ธ์ฆ ๋ฐฉ๋ฒ / ์ฐ๊ฒฐ ๋๋ ์ด๋ (Connection Draining)
๐ ELB SSL ์ธ์ฆ
SSL ์ธ์ฆ์๋ ํด๋ผ์ด์ธํธ์ ๋ก๋ ๋ฐธ๋ฐ์ ์ฌ์ด์์ ํธ๋ํฝ์ด ์ด๋ํ๋ ๋์ ์ํธํํด์ค๋ค. ์ด๋ฅผ ์ ์ก ์ค (in-flight) ์ํธํ๋ผ๊ณ ํ๋๋ฐ ๋ฐ์ดํฐ๋ ๋คํธ์ํฌ๋ฅผ ์ด๋ํ๋ ์ค์๋ ์ํธํ๋๊ณ , ์ก์ ์ ์์ ์ ์ธก์์๋ง ์ด๋ฅผ ๋ณตํธํ ํ ์ ์๋ค. SSL์ '๋ณด์ ์์ผ ๊ณ์ธต'์ ์๋ฏธํ๊ณ ์ฐ๊ฒฐ์ ์ํธํํ๋๋ฐ ์ฌ์ฉํ๋๋ฐ TLS๋ ์๋ก์ด ๋ฒ์ ์ SSL๋ก '์ ์ก ๊ณ์ธต ๋ณด์'์ ์๋ฏธ ํ๋ค. ์ด๋ฌํ ์ธ์ฆ์๋ ์ธ์ฆ ๊ธฐ๊ด(CA)์์ ๋ฐ๊ธ ๋ฐ์์ผ ํ๋๋ฐ ๊ทธ ๊ธฐ๊ด์๋ ์ฝ๋ชจ๋, ๊ณ ๋๋, Let's Encypt ๋ฑ์ด ์๋ค. ์ด๋ ๊ฒ ์ธ์ฆ ๋ฐ๊ธ์๋ฅผ ๋ก๋ ๋ฐธ๋ฐ์์ ์ถ๊ฐํ๋ฉด ํด๋ผ์ด์ธํธ์ ๋ก๋ ๋ฐธ๋ฐ์ ์ฌ์ด์ ์ฐ๊ฒฐ์ ์ํธํ ํ ์ ์๊ฒ ๋๋ค.
์๋ ๋ฐฉ์์ ์ ์ ๊ฐ ์ธํฐ๋ท์ ํตํด ๋ก๋ ๋ฐธ๋ฐ์์ ์ ์ํ๋ฉด ๋ก๋ ๋ฐธ๋ฐ์์์๋ ๋ด๋ถ์ ์ผ๋ก ๋ฐฑ์ค๋์ ์ํธํ ๋์ง ์์ HTTP๋ก EC2 ์ธ์คํด์ค์ ํต์ ํ๊ฒ ๋๋๋ฐ VPC๋ก ์ด๋ํ๋ ํ๋ผ์ด๋น ๋คํธ์ํฌ๋ฅผ ์ฐ๊ธฐ ๋๋ฌธ์ ์์ ํ๊ฒ ๋ณดํธ๋๋ค. AWS ์์๋ ์ด ์ธ์ฆ์๋ค์ ๊ด๋ฆฌํ๋ ACM์ด ์์ผ๋ฉฐ ์ํ๋ค๋ฉด ๊ฐ์ง๊ณ ์๋ ์ธ์ฆ์๋ฅผ ์ ๋ก๋ ํ ์ ๋ ์๋ค.
SNI(Serve Name Indication)
์๋ฒ ์ด๋ฆ ์ง์ SNI (Serve Name Indication)๋ ์ฌ๋ฌ ๊ฐ์ SSL ์ธ์ฆ์๋ฅผ ํ๋์ ์น ์๋ฒ์ ๋ก๋ํด ์ฌ๋ฌ ๊ฐ์ ์น ์ฌ์ดํธ์ ์ธ์ฆ์ ์ง์ํด์ค๋ค. ์ด๊ฒ์ ํ์ฅ๋ ํ๋กํ ์ฝ๋ก ์ต์ด์ SSL ํธ๋์ ฐ์ดํฌ ๋จ๊ณ์์ ํด๋ผ์ด์ธํธ๊ฐ ๋์ ์๋ฒ์ ํธ์คํธ ์ด๋ฆ์ ์ง์ ํ๋๋ก ํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ์น์ฌ์ดํธ์ ํ์ํ ์ธ์ฆ์๋ฅผ ๋ก๋ํด์ค๋ค. ์ด ํ๋กํ ์ฝ์ ALB์ NLB ๊ทธ๋ฆฌ๊ณ CloundFront์์๋ง ๋์ํ๋ค. ์๋ ์ด๋ฏธ์ง์ ๊ฐ์ด ALB๊ฐ ๋ ๊ฐ์ SSL ์ธ์ฆ์๋ฅผ ๊ฐ๊ณ ์์ ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ์ฃผ์ ์ด๋ฆ์ ํ์ ํ์ฌ ํด๋นํ๋ SSL ์ธ์ฆ์๋ฅผ ์ธ์ฆํด์ค ๊ฒ์ด๋ค.
๐ SSL ์ธ์ฆํ๋ ๋ฒ
SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ ๋ฐ์ ํ์ ๊ณผ์ ๋ง ์์ ํ๋๋ก ํ๊ฒ ๋ค. ์ฐ์ ๋ก๋ ๋ฐธ๋ฐ์์ ๋ค์ด๊ฐ SSL ์ธ์ฆ ๋ฐ์ ๋ก๋ ๋ฐธ๋ฐ๋ฅผ ์ ํํด์ค ํ ๋ฆฌ์ค๋ ๋ฐ ๊ท์น์ ๋ค์ด๊ฐ ๋ฆฌ์ค๋๋ฅผ ์ถ๊ฐํด์ค๋ค.
๋ฆฌ์ค๋์ HTTPS ๋ฅผ ์ถ๊ฐํด ์ค ํ ์ต์ ์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋ง์ถฐ์ค๋ค. (์ฌ๊ธฐ์ ๋ฆฌ์ค๋๋ ํด๋ผ์ด์ธํธ์์ ๋ก๋ ๋ฐธ๋ฐ์์๊ฒ ์์ฒญํ๋ ํต์ ์ฃผ์ฒด๋ฅผ ์๋ฏธํ๋ค.) ์ค์ํ๊ฑด ๋ก๋ ๋ฐธ๋ฐ์์ ๋ณด์ ๊ทธ๋ฃน์ ์ธ๋ฐ์ด๋ ๋ฃฐ์ HTTPS ๋ง์ ํต์ ์ ํ์ฉํด์ผํ๊ณ ๋์ ๊ทธ๋ฃน์ธ EC2 ์ธ์คํด์ค ๋ฌถ์๋ค์๊ฒ HTTP ํฌํธ๋ฅผ ํ๊ฐํ๊ฒ ๋ ํด์ผํ๋ค๋ ๊ฒ์ด๋ค.
์ถ๊ฐ๋ก ๋์ ๊ทธ๋ฃน์ HTTP ํต์ ํฌํธ์ธ 80ํฌํธ์ ์์ค์์๋ 0.0.0.0/0 ์ด ์๋ ALB์ ๋ณด์ ๊ทธ๋ฃน์ ํตํด์๋ง ๋ค์ด์ค๊ฒํด์ผํ๋ค๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒํ๋ฉด ์ ์ ๋ค์ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์ฐํํ ํธ๋ํฝ์ผ๋ก๋ ์ ๊ทผํ์ง ๋ชปํ ๊ฒ์ด๋ค.
๋ณด์ ๋ฆฌ์ค๋ ์ค์ ๋ ์๋์ ๊ฐ์ด ์ต์ ์ ๋ง์ถฐ์ค๋ค. ์ ์ฅํ์๋ ์ธ์ฆ์๋ฅผ ACM ์ ๋ฃ์ด์ฃผ์๋ค๋ฉด ์ธ์ฆ์๋ฅผ ์ ํํด์ฃผ๊ณ ์ถ๊ฐ ํด์ฃผ๋ฉด ์ฑ๊ณต์ ์ผ๋ก SSL ์ธ์ฆ์ ๋ง์น ์ ์๋ค.
๐ ์ฐ๊ฒฐ ๋๋ ์ด๋์ด๋ .. ? (Connection Draining)
์ธ์คํด์ค๊ฐ ๋ฑ๋ก ์ทจ์, ํน์ ๋น์ ์์ธ ์ํ์ ์์ ๋ ์ธ์คํด์ค์ ์ด๋ ์ ๋์ ์๊ฐ์ ์ฃผ์ด ์ธ-ํ๋ผ์ดํธ ์์ฒญ, ์ฆ ํ์ฑ๋ ์์ฒญ์ ์๋ฃํ ์ ์๋๋ก ํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ธ์คํด์ค๊ฐ ์ฐ๊ฒฐ ๋๋ ์ด๋์ด ๋๋ฉด ELB๋ ๋ฑ๋ก ์ทจ์ ์ค์ธ EC2 ์ธ์คํด์ค๋ก ์๋ก์ด ์์ฒญ์ ๋ณด๋ด์ง ์๋๋ค.
์ด๋ฏธ์ง ์ฒ๋ผ ํ๋์ ์ธ์คํด์ค๊ฐ ๋๋ ์ด๋ ๋ชจ๋์ผ ๋ ๊ทธ๋ผ EC2 ์ธ์คํด์ค์ ์ด๋ฏธ ์ฐ๊ฒฐ๋ ์ ์ ๋ ์ถฉ๋ถํ ๋๋ ์ด๋ ์๊ฐ์ ์ป๊ฒ๋ ๊ฒ์ด๊ณ ๊ธฐ์กด ์ฐ๊ฒฐ ๋ฐ ๊ธฐ์กด ์์ฒญ์ ์๋ฃํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ด ๋๋๋ฉด ๋ชจ๋ ์ฐ๊ฒฐ์ด ์ ์ง๋๋ค. ๋ง์ฝ ์๋ก์ด ์ ์ ๊ฐ ELB์ ์ฐ๊ฒฐํ๋ ค๊ณ ํ๋ฉด ๋๋ ์ด๋ ์ํ๊ฐ ์๋ ๋ค๋ฅธ EC2 ์ธ์คํด์ค์๋ง ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ด๋ค. ์ฐ๊ฒฐ ๋๋ ์ด๋์ 1๋ถํฐ 3,600 ์ด ์ฌ์ด์ ๊ฐ์ผ๋ก ์ค์ ํ ์ ์์ผ๋ฉฐ ๊ธฐ๋ณธ์ ์ผ๋ก๋ 300์ด, ์ฆ 5๋ถ์ด๋ค.