AWS ์ธ์ฆ์ ๊ด๋ จ ํ์คํ ๋ฆฌ โ
- AWS Certificate Manager, ๊ฐ์ ธ์จ ECDSA ๋ฐ RSA ์ธ์ฆ์์ ํ์ฅ๋ ์ฌ์ฉ ์ ๊ณต
- AWS Certificate Manager, ์ด์ Elliptic Curve Digital Signature Algorithm TLS ์ธ์ฆ์ ์ง์
- Network Load Balancer, ์ด์ AWS Certificate Manager๋ฅผ ํตํ RSA 3072-๋นํธ, ECDSA 256/384/521-๋นํธ ์ธ์ฆ์ ์ง์
์ ๊ธฐ๋ก์ฒ๋ผ 2021๋ 7์ ๋ถํฐ AWS Certificate Manager์์ ์ธ๋ถ์์ ๋ฐ๊ธ๋ ECDSA ์ธ์ฆ์๋ฅผ ๊ฐ์ ธ์์ ๋ฑ๋กํ ์ ์๊ฒ ์ง์ํ์๊ณ 2022๋ 11์ ๋ถํฐ๋ ACM ์์ฒด์ ์ผ๋ก ECDSA ์ธ์ฆ์ ๋ฐ๊ธ์ ์ง์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ด ํ๋ฌ 2024๋ 1์๋ถํฐ๋ Network Load Balancer ์์๋ ECDSA ์ธ์ฆ์ ๋ฑ๋ก์ ์ง์ํ๋ค.
์ ํ๋ฉด์ ACM ์ธ๋ถ์์ ๋ฐ๊ธ๋ ECDSA ์ธ์ฆ์๋ฅผ ๊ฐ์ ธ์จ ์์๋ฅผ ๋ณด์ฌ์ค๋๋ค.
Network Load Balancer TLS ๋ฆฌ์ค๋ ๊ตฌ์ฑ โ
๊ทธ๋์ ELB ์์ ECDSA ์ธ์ฆ์๋ก TLS ์คํ๋ก๋๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ์ค์ง ALB(Application Load Balancer)๋ฅผ ๊ตฌ์ฑํด์ผํ๋ค. ์ด์ ๋ NLB(Network Load Balancer)
๋ก ๊ตฌ์ฑํ๊ณ TLS ๋ฆฌ์ค๋์์ ACM์ ์ถ๊ฐ๋์ด์๋ ECDSA ์ธ์ฆ์
๋ฅผ ์ ํํ์ฌ ๊ตฌ์ฑํ ์ ์๋ค.
ํ์ง๋ง, NLB๊ฐ TLS ๋ฆฌ์ค๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ mTLS๋ ์ง์ํ์ง ๋ชปํ๋ ๊ตฌ์ฑ์ด ๋๋ ๊ฒ์ ์ผ๋ถ ์์คํ ์์ ์ค์ํ ๋ถ๋ถ์ผ ์ ์์ต๋๋ค.
๋์ ๊ทธ๋ฃน - ํ๋ก์ ํ๋กํ ์ฝ v2 โ
NLB ๋ ALB์๋ ๋ค๋ฅด๊ฒ L4 ๋ ๋ฒจ๋ก ๋์ํ๋ฏ๋ก HTTP ํธ๋ํฝ์ HTTPS๋ก ๋ฆฌ๋ค์ด๋ ํธํ๋ ๊ฒ์ ์ง์ํ์ง ๋ชปํ๋ค. ChatGPT์๊ฒ ๋ฌผ์ด๋ณด๋๋ผ๋ TCP ๋ฆฌ์ค๋๋ก ๊ตฌ์ฑํ๊ณ Nginx์ ๊ฐ์ ๋ณ๋์ ๋ก๋๋ฐธ๋ฐ์์์ TLS ์คํ๋ก๋๋ฅผ ์ฒ๋ฆฌํจ๊ณผ ๋์์ Forward http to https
๋ฅผ ์ ์ฉํ๋ ์์๋ฅผ ์ค๋ช
ํ๋ค.
์ฌ๋ด ์์ง๋์ด์ ์ฝ์ง์ ํด๋ณธ๊ฒฐ๊ณผ ๋ก๋ ๋ฐธ๋ฐ์์ ์ฐ๊ฒฐ๋๋ ๋์ ๊ทธ๋ฃน์์ ํ๋ก์ ํ๋กํ ์ฝ v2
๋ฅผ ํ์ฑํํ๋ฉด Elastic Beanstalk์ Nginx ํ๋ซํผ์์ PROXY Protocol์ ํตํด $proxy_protocol_server_port
์์ฑ์ ์ฌ์ฉํ ์ ์์์ ํ์ธํ๋ค. ๋ ๋์๊ฐ์๋ $proxy_protocol_addr
์์ฑ์ผ๋ก ์ค์ ๋ก ํธ๋ํฝ์ ์ ๋ฌํ ํด๋ผ์ด์ธํธ IP
๋ฅผ ์ก์ธ์ค ๋ก๊ทธ์ ์ถ๋ ฅํ๊ฑฐ๋ X-Forwarded-For
ํค๋๋ก ์ ํ๋ฆฌ์ผ์ด์
๊น์ง ์ ๋ฌํ ์ ์์ด๋ณด์ธ๋ค.
http {
server {
listen 80 proxy_protocol;
if ($proxy_protocol_server_port = 80) {
return 301 https://$host$request_uri;
}
}
}
NLB ์์ Nginx๋ก ์ ๋ฌํ ๋ ์ฌ์ฉํ ํฌํธ๊ฐ 80 ์ด๋ผ๋ฉด HTTP ์์ฒญ์ผ๋ก ๊ฐ์ฃผํ๊ณ HTTPS ์์ฒญ์ผ๋ก ์ ๋ฌ๋ ์ ์๋๋ก 301 ์๋ต์ ์ฒ๋ฆฌํ์ต๋๋ค.