1์ธ ๊ฐ๋ฐ์ ์๋ฒ ๊ตฌ์ถ๊ธฐ: Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์์ Let's Encrypt๋ก ๋ฌด๋ฃ HTTPS(SSL) ์๋ฒฝ ์ ์ฉํ๊ธฐ
์ฐ๋ฆฌ๊ฐ ํ๋ค๊ฒ ์ฝ๋๋ฅผ ์ง๊ณ ๋ฉ์ง ์น์ฌ์ดํธ๋ ์ปค๋ฎค๋ํฐ๋ฅผ ์ธ์์ ๊ณต๊ฐํ์ ๋, ๊ฐ์ฅ ํ ๋น ์ง๋ ์๊ฐ์ด ์ธ์ ์ผ๊น์? ๋ฐ๋ก ํฌ๋กฌ(Chrome)์ด๋ ์ฃ์ง(Edge) ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ ์ผ์ชฝ์ ์๋ป๊ฑด ์์ผ๋ก '์ฃผ์ ์ํจ(Not Secure)'์ด๋ผ๋ ๊ฒฝ๊ณ ๋ฑ์ง๊ฐ ๋ถ์ด ์๋ ๊ฒ์ ๋ณผ ๋์ ๋๋ค.
๊ณผ๊ฑฐ์๋ ๊ฒฐ์ ์์คํ ์ด ์๋ ์ผํ๋ชฐ์ด๋ ๋ํ ํฌํธ์์๋ง HTTPS(๋ณด์ ์ฐ๊ฒฐ)๋ฅผ ํ์๋ก ์ฌ๊ฒผ์ต๋๋ค. ํ์ง๋ง ์ด์ ๋ ์๋๊ฐ ์์ ํ ๋ฌ๋ผ์ก์ต๋๋ค. ๊ตฌ๊ธ ๊ฒ์ ์์ง(SEO)์ HTTP๋ก ๋ ์ฌ์ดํธ์ ๊ฒ์ ์์๋ฅผ ๋งค๋ชฐ์ฐจ๊ฒ ๋จ์ด๋จ๋ฆฌ๊ณ ์์ผ๋ฉฐ, ๊ตฌ๊ธ ์ ๋์ผ์ค ์ญ์ ๋ณด์์ด ์ทจ์ฝํ ์ฌ์ดํธ์๋ ์ข์ฒ๋ผ ์ข์ ์ ์๋ฅผ ์ฃผ์ง ์์ต๋๋ค. ์ ์ ๋ค ๋ํ '์ฃผ์ ์ํจ' ๋ฌธ๊ตฌ๋ฅผ ๋ณด๋ ์๊ฐ ๋ค๋ก ๊ฐ๊ธฐ ๋ฒํผ์ ๋๋ฌ๋ฒ๋ฆฌ๊ธฐ ์ผ์ค์ฃ .
๊ทธ๋์ ์ค๋์ ์ ๊ฐ ์ด์ํ๋ ํ์ด์ฌ ๋ฐฑ์๋(FastAPI) ์๋ฒ ์๋จ์ Nginx๋ผ๋ ์์ฃผ ๋๋ํ ๋ฌธ์ง๊ธฐ๋ฅผ ์ธ์ฐ๊ณ , Let's Encrypt๋ฅผ ํตํด ํ์ ๋ฌด๋ฃ๋ก SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ์ HTTPS ํ๊ฒฝ์ ๊ตฌ์ถํ๋ ๋๋ฌผ๊ฒจ์ด(?) ๊ฒฝํ๋ด์ ๋๋์ด ๋ณด๋ ค ํฉ๋๋ค.
1. ์น ์๋ฒ์ ๋ ๋ ํ ๋ฌธ์ง๊ธฐ, Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์(Reverse Proxy) ๋์
์ฒ์ ํ์ด์ฌ ์๋ฒ๋ฅผ ๋์ ์ ๋, ์ ๋ 8000๋ฒ ํฌํธ๋ฅผ ์ด์ด๋๊ณ ์ ์ ๋ค์ด ์ง์ ๊ทธ๊ณณ์ผ๋ก ์ ์ํ๊ฒ ๋ง๋ค์์ต๋๋ค. (์: http://inspeep.com:8000) ๋ชจ์์๋ ์ ์ด๊ณ ๋ณด์์๋ ์ทจ์ฝํ, ๊ทธ์ผ๋ง๋ก ๋ ๊ฒ์ ์ํ์์ฃ .
์ด๋ ๊ตฌ์ํฌ์๋ก ๋ฑ์ฅํ ๊ฒ์ด ๋ฐ๋ก Nginx(์์ง์์ค)์ ๋๋ค. Nginx๋ฅผ ์๋ฒ ์๋จ์ ์ค์นํ๊ณ '๋ฆฌ๋ฒ์ค ํ๋ก์'๋ผ๋ ์ค์ ์ ์ ์ฉํ์ต๋๋ค.
์๋ฆฌ๋ ์๊ฐ๋ณด๋ค ๊ฐ๋จํฉ๋๋ค. ์ ์ ๊ฐ ์ธํฐ๋ท์ ๊ธฐ๋ณธ ํต๋ก์ธ 80๋ฒ ํฌํธ(HTTP)๋ 443๋ฒ ํฌํธ(HTTPS)๋ก ์ ์์ ์์ฒญํ๋ฉด, ์๋จ์ ์ ์๋ Nginx๊ฐ ์ด ์์ฒญ์ ๋์ฃฝ ๋ฐ์์ ๋ค์ ๊ฝ๊ฝ ์จ์ด์๋ ํ์ด์ฌ ์๋ฒ(8000๋ฒ ํฌํธ)๋ก ์์ ํ๊ฒ ํ ์คํด ์ฃผ๋ ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ๋ ํ์ด์ฌ ์๋ฒ๊ฐ ์ง์ ์ธ๋ถ์ ๊ณต๊ฒฉ์ ๋ฐ์ ์ผ์ด ์์ด์ก๊ณ , ์ ์ ํญ์ฃผ ์ ๋ก๋๋ฐธ๋ฐ์ฑ(ํธ๋ํฝ ๋ถ์ฐ)๊น์ง ํ ์ ์๋ ๊ฒฌ๊ณ ํ ๋ผ๋๊ฐ ์์ฑ๋์์ต๋๋ค.
2. ๋น์ผ SSL ์ธ์ฆ์? Let's Encrypt๋ก ํ์ ๋ฌด๋ฃ๋ก ํด๊ฒฐํ์
Nginx ๋ฌธ์ง๊ธฐ๋ฅผ ์ธ์ ์ผ๋, ์ด์ ์ด ๋ฌธ์ง๊ธฐ์๊ฒ ํผํผํ '๋ณด์ ์๋ฌผ์ (SSL ์ธ์ฆ์)'๋ฅผ ์ฅ์ฌ์ค ์ฐจ๋ก์ ๋๋ค.
SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด ์ฃผ๋ ์ ๋ช ํ ๊ธฐ๊ด๋ค(Verisign, Comodo ๋ฑ)์ ๋ค์ด๊ฐ ๋ณด๋ฉด 1๋ ์ ์๋ง ์์์ ์์ญ๋ง ์๊น์ง ํ๋ ์ ์ง ๋น์ฉ์ ์จ์ด ํฑ ๋งํ๋๋ค. ํธ๋ํฝ ๋น์ฉ ๋ด๊ธฐ๋ ๋ฒ ์ฐฌ 1์ธ ๊ฐ๋ฐ์์๊ฒ ๋งค๋ ๊ฐฑ์ ๋น์ฉ์ ์์ฒญ๋ ๋ถ๋ด์ด์ฃ .
์ด๋ ํ ์ค๊ธฐ ๋น๊ณผ ๊ฐ์ ๋น์๋ฆฌ ๊ธฐ๊ด์ด ์์ผ๋, ๋ฐ๋ก Let's Encrypt์ ๋๋ค. ์ ์ธ๊ณ ์น์ HTTPS ๋ณด๊ธํ๋ฅผ ์ํด ๋ง๋ค์ด์ง ์ด ํ๋ก์ ํธ๋ ๋๊ตฌ๋ ๋ช ๋ น์ด ๋ช ์ค๋ง ์น๋ฉด ์๋ฒฝํ๊ฒ ์์ ํ ํ์ค SSL ์ธ์ฆ์๋ฅผ '๋ฌด๋ฃ'๋ก ๋ฐ๊ธํด ์ค๋๋ค.
์๋ฒ ํฐ๋ฏธ๋์ ์ ์ํ์ฌ ์ฐ๋ถํฌ(Ubuntu) ํจํค์ง ๊ด๋ฆฌ์๋ก Certbot์ด๋ผ๋ ์๋ํ ํ๋ก๊ทธ๋จ์ ์ค์นํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Nginx ์ค์ ํ์ผ์ ์ ๋๋ฉ์ธ(inspeep.com)์ ๋ช
์ํด ๋ ๋ค, ์๋์ ๋ง๋ฒ ๊ฐ์ ๋ช
๋ น์ด ํ ์ค์ ์
๋ ฅํ์ต๋๋ค.
sudo certbot --nginx -d inspeep.com
์ํฐ๋ฅผ ์น๊ณ ๋ช ์ด ์ง๋์ง ์์, ํฐ๋ฏธ๋ ์ฐฝ์ "Congratulations! You have successfully enabled https..."๋ผ๋ ์ถํ ๋ฉ์์ง๊ฐ ๋ด์ต๋๋ค. ๋จ๋ฆฌ๋ ๋ง์์ผ๋ก ์ค๋งํธํฐ์ ์ผ์ ์ ์ฌ์ดํธ์ ์ ์ํด ๋ณด๋, ์ฃผ์์ฐฝ ์ผ์ชฝ์ ์๋กฑํ๊ณ ๋ ๋ ํ ์๋ฌผ์ ์์ด์ฝ(๐)์ด ๋กํ๋ ๊ฑธ๋ ค ์์์ต๋๋ค. ๊ทธ ์ง๋ฆฟํจ์ ์ ๋ง ๊ฐ๋ฐํด ๋ณธ ์ฌ๋๋ง์ด ์ ์ ์๋ ์ต๊ณ ์ ์๊ฐ์ด์์ต๋๋ค.
3. ๊ท์ฐฎ์ ๊ฐฑ์ ์์ ์ ํฌ๋ก ํญ(Crontab)์ผ๋ก ์์ ์๋ํ
Let's Encrypt์ ์ ์ผํ ๋จ์ ์ ์ธ์ฆ์์ ์ ํจ ๊ธฐ๊ฐ์ด 90์ผ๋ก ๊ฝค ์งง๋ค๋ ๊ฒ์ ๋๋ค. ๋ณด์์ ์ํด ์๋์ ์ผ๋ก ์งง๊ฒ ์ค์ ํด ๋ ๊ฒ์ด์ฃ . ์ฆ, 3๊ฐ์๋ง๋ค ํ ๋ฒ์ฉ ์๋ฒ์ ์ ์ํด์ ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํด ์ฃผ์ด์ผ ํฉ๋๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๋ ๊ท์ฐฎ์ ๋ฐ๋ณต ์์ ์ ์ธ์์์ ์ ์ผ ์ซ์ดํ๋ ๊ฐ๋ฐ์๋ค ์๋๋๊น? ์ ๋ ๋ฆฌ๋ ์ค์ ๊ธฐ๋ณธ ์ค์ผ์ค๋ฌ์ธ ํฌ๋ก ํญ(Crontab)์ ํ์ฉํ์ฌ ์ด ์์ ๋ง์ ์๋ฒฝํ๊ฒ ์๋ํํด ๋ฒ๋ ธ์ต๋๋ค.
ํฐ๋ฏธ๋์ crontab -e๋ฅผ ์
๋ ฅํ์ฌ ์ค์ผ์ค๋ฌ๋ฅผ ์ด๊ณ , ๋งค์ 1์ผ ์๋ฒฝ 3์๋ง๋ค certbot renew ๋ช
๋ น์ด๊ฐ ์๋์ผ๋ก ์คํ๋๋๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐฑ์ ์ด ์๋ฃ๋๋ฉด Nginx ์๋ฒ๊ฐ ์ด์ง ์ฌ์์(Reload) ๋์ด ์๋ก์ด ์ธ์ฆ์๋ฅผ ์ฆ์ ๋ฌผ๊ณ ์ฌ๋ผ์ค๋๋ก ์กฐ์นํ์ต๋๋ค.

์ด์ ์ ๋ ์ธ์ฆ์ ๋ง๋ฃ์ผ์ด ์ธ์ ์ธ์ง ์ ๊ฒฝ์กฐ์ฐจ ์ฐ์ง ์์ต๋๋ค. ์ ๊ฐ ๊ณคํ ์๊ณ ์๋ ์๋ฒฝ ์๊ฐ์๋ ์๋ฒ๋ ํผ์ ์์์ ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํ๊ณ , ์๋ก์ด ์๋ฌผ์ ๋ก ๊ต์ฒดํ๋ฉฐ ์ฌ์ดํธ์ ๋ณด์์ ์ฒ ํต๊ฐ์ด ์ ์งํ๊ณ ์์ผ๋๊น์.
๋งบ์ผ๋ฉฐ: ๋ณด์์ ์ ํ์ด ์๋, ์ฌ์ดํธ ์ฑ์ฅ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ํ ๋์ ๋๋ค
์ด๋ฒ Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์ ๊ตฌ์ถ๊ณผ Let's Encrypt HTTPS ์ ์ฉ ์์ ์ ๋ง์น๋ฉด์ ๋๋ ์ ์ด ํ๋ ์์ต๋๋ค.
"์ข์ ์ฝํ ์ธ ๋ง ์ ์ฐ๋ฉด ์ ์ ๋ค์ด ์์์ ์ค๊ฒ ์ง"๋ผ๋ ์๊ฐ์ ์ ๋ฐ๋ง ๋ง๋ค๋ ๊ฒ์ ๋๋ค. ๋ด ์ง์ ์ฐพ์์จ ์๋(์ ์ )๋ค์ด ํดํน์ด๋ ๊ฐ์ธ์ ๋ณด ์ ์ถ ๊ฑฑ์ ์์ด ์์ฌํ๊ณ ๋จธ๋ฌด๋ฅผ ์ ์๋ '์์ ํ ํ๊ฒฝ'์ ๋ง๋ค์ด์ฃผ๋ ๊ฒ. ๊ทธ๊ฒ์ด ์๋น์ค ์ด์์๊ฐ ๊ฐ์ถฐ์ผ ํ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์์ด์ ์ธํ๋ผ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฒ๋ค๊ฐ ๊ตฌ๊ธ ๊ฒ์ ์์ง์ ์ด๋ ๊ฒ ๋ณด์์ด ์ ๊ฐ์ถฐ์ง HTTPS ์ฌ์ดํธ๋ค์๊ฒ ํํ ๊ฐ์ฐ์ ์ ์ค๋๋ค. ์ค์ ๋ก ์๋ฌผ์ ๋ฅผ ๋ฌ๊ณ ๋ ์ดํ ๊ตฌ๊ธ ์์น ์ฝ์์์ ๊ธ์ด๊ฐ๋ ํ์ด์ง์ ์์ธ ์๋๊ฐ ๋ฌํ๊ฒ ๋ ๋นจ๋ผ์ง ๊ฒ์ ์ฒด๊ฐํ๊ณ ์์ต๋๋ค.
ํน์ ์์ง๋ ์๋ฒ๋ฅผ HTTP๋ก ๋ถ์ํ๊ฒ ๋์๋๊ณ ๊ณ์๊ฑฐ๋, ๋น์ผ ์ธ์ฆ์ ๋น์ฉ ๋๋ฌธ์ ๊ณ ๋ฏผ ์ค์ธ ๊ฐ๋ฐ์๋ถ์ด ๊ณ์ ๋ค๋ฉด ์ค๋ ๋น์ฅ Let's Encrypt์ Certbot์ ๋์ ํด ๋ณด์ธ์. ์ฝ๊ฐ์ ํฐ๋ฏธ๋ ๋ช ๋ น์ด ๊ณต๋ถ๋ง ํ์๋ฉด, ๋งค์ ๋๊ฐ๋ ๊ตฌ๋ ๋ฃ๋ฅผ ํ์ ์๋ผ๋ฉด์๋ ์ธ์์์ ๊ฐ์ฅ ์์ ํ ๋๋ง์ ์น ์ํ๊ณ๋ฅผ ๊ตฌ์ถํ์ค ์ ์์ ๊ฒ์ ๋๋ค.

๐ฌ ๋๊ธ 0๊ฐ