๋ชฉ์ฐจ
- HTTPS ์ ์ฉ, ์ด์ ๋ ์ ํ์ด ์๋ ํ์
- Let's Encrypt๋ ๋ฌด์์ธ๊ฐ?
- ์ค๋น ์ฌํญ ํ์ธ
- Certbot ์ค์นํ๊ธฐ
- SSL ์ธ์ฆ์ ๋ฐ๊ธ ๋ฐ Nginx์ ์๋ ์ ์ฉ
- HTTPS ์ ์ฉ ํ์ธํ๊ธฐ
- ์ธ์ฆ์ ์๋ ๊ฐฑ์ ์ค์
- ์์ฃผ ๋ฐ์ํ๋ ์ค๋ฅ์ ํด๊ฒฐ๋ฒ
- ์ ๋ฆฌ
1. HTTPS ์ ์ฉ, ์ด์ ๋ ์ ํ์ด ์๋ ํ์
๊ณผ๊ฑฐ์๋ SSL ์ธ์ฆ์๋ฅผ ๊ตฌ๋งคํ๋ ๋ฐ ์ฐ๊ฐ ์์ญ๋ง ์์ด ๋ค์์ต๋๋ค. ๊ทธ๋์ ๊ฐ์ธ ๋ธ๋ก๊ทธ๋ ์๊ท๋ชจ ์ฌ์ดํธ๋ HTTP๋ฅผ ๊ทธ๋ฅ ์ฐ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค.
ํ์ง๋ง ์ง๊ธ์ ์ํฉ์ด ์์ ํ ๋ฌ๋ผ์ก์ต๋๋ค. Let's Encrypt ๋๋ถ์ SSL ์ธ์ฆ์๋ฅผ ๋ฌด๋ฃ๋ก ๋ฐ๊ธ๋ฐ์ ์ ์๊ฒ ๋๊ณ , ๊ตฌ๊ธ์ HTTPS๋ฅผ ๊ฒ์ ๋ญํน ์์๋ก ๋ฐ์ํ๊ณ ์์ผ๋ฉฐ, ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ HTTP ์ฌ์ดํธ์ "์์ ํ์ง ์์" ๊ฒฝ๊ณ ๋ฅผ ํ์ํฉ๋๋ค.
์ด ๊ธ์์๋ Ubuntu ์๋ฒ์ Nginx๊ฐ ์ค์น๋ ํ๊ฒฝ์ ๊ธฐ์ค์ผ๋ก, Let's Encrypt ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ๊ณ HTTPS๋ฅผ ์ ์ฉํ๋ ์ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์๋ด๋๋ฆฝ๋๋ค.
2. Let's Encrypt๋ ๋ฌด์์ธ๊ฐ?
Let's Encrypt๋ ๋ชจ์ง๋ผ ์ฌ๋จ ๋ฑ์ด ์ง์ํ๋ ๋น์๋ฆฌ ์ธ์ฆ ๊ธฐ๊ด(CA)์ผ๋ก, ๋๊ตฌ์๊ฒ๋ ๋ฌด๋ฃ๋ก SSL/TLS ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด ์ค๋๋ค. 2016๋ ์๋น์ค ์์ ์ดํ ํ์ฌ๊น์ง ์์ต ๊ฐ์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ ์ธ๊ณ ์ต๋ ๊ท๋ชจ์ ๋ฌด๋ฃ ์ธ์ฆ ๊ธฐ๊ด์ ๋๋ค.
Let's Encrypt ์ธ์ฆ์์ ํน์ง์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์์ ๋ฌด๋ฃ์ด๋ฉฐ, ๋ฐ๊ธ ๊ณผ์ ์ด ์๋ํ๋์ด ์์ด ๋ช ๊ฐ์ง ๋ช ๋ น์ด๋ง์ผ๋ก ์ค์น๊ฐ ์๋ฃ๋ฉ๋๋ค. ์ ํจ ๊ธฐ๊ฐ์ 90์ผ์ด์ง๋ง ์๋ ๊ฐฑ์ ์ ์ค์ ํ๋ฉด ๋ง๋ฃ ๊ฑฑ์ ์์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์์ ์ ๋ขฐํ๋ ์ธ์ฆ์์ ๋๋ค.
3. ์ค๋น ์ฌํญ ํ์ธ
SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ๊ธฐ ์ ์ ์๋ ์กฐ๊ฑด์ด ๊ฐ์ถฐ์ ธ ์์ด์ผ ํฉ๋๋ค.
๋๋ฉ์ธ ๋ณด์ ํ์ Let's Encrypt๋ IP ์ฃผ์๊ฐ ์๋ ๋๋ฉ์ธ์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํฉ๋๋ค. ๋๋ฉ์ธ์ด ์๋ค๋ฉด ๋จผ์ ๋๋ฉ์ธ์ ๊ตฌ์ ํ๊ณ ์๋ฒ IP์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.
DNS ์ ํ ์๋ฃ ๋๋ฉ์ธ์ด ์๋ฒ IP๋ฅผ ๊ฐ๋ฆฌํค๋๋ก DNS ์ค์ ์ด ์๋ฃ๋๊ณ ์ ํ๊น์ง ๋๋์ผ ํฉ๋๋ค. ์ธ์ฆ์ ๋ฐ๊ธ ๊ณผ์ ์์ Let's Encrypt ์๋ฒ๊ฐ ๋๋ฉ์ธ์ผ๋ก ์ ์์ ์๋ํด ์์ ๊ถ์ ํ์ธํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
80๋ฒ ํฌํธ ์คํ ๋ฐฉํ๋ฒฝ์์ 80๋ฒ ํฌํธ๊ฐ ์ด๋ ค ์์ด์ผ ํฉ๋๋ค. ์ธ์ฆ์ ๋ฐ๊ธ ์ HTTP๋ฅผ ํตํ ๋๋ฉ์ธ ์์ ๊ถ ํ์ธ์ด ์ด๋ฃจ์ด์ง๋๋ค.
Nginx ์คํ ์ค Nginx๊ฐ ์ ์์ ์ผ๋ก ์คํ ์ค์ธ ์ํ์ฌ์ผ ํฉ๋๋ค.
4. Certbot ์ค์นํ๊ธฐ
Certbot์ Let's Encrypt ์ธ์ฆ์ ๋ฐ๊ธ์ ์๋ํํด์ฃผ๋ ๊ณต์ ๋๊ตฌ์ ๋๋ค. Certbot์ ์ฌ์ฉํ๋ฉด ์ธ์ฆ์ ๋ฐ๊ธ, Nginx ์ค์ ์์ , ์๋ ๊ฐฑ์ ๊น์ง ๋ชจ๋ ์ฒ๋ฆฌํด ์ค๋๋ค.
๋จผ์ ํจํค์ง ๋ชฉ๋ก์ ์ ๋ฐ์ดํธํฉ๋๋ค.
sudo apt update
Certbot๊ณผ Nginx ํ๋ฌ๊ทธ์ธ์ ์ค์นํฉ๋๋ค.
sudo apt install certbot python3-certbot-nginx -y
์ค์น๊ฐ ์๋ฃ๋๋ฉด certbot --version ๋ช ๋ น์ด๋ก ์ ์ ์ค์น๋ฅผ ํ์ธํฉ๋๋ค.
5. SSL ์ธ์ฆ์ ๋ฐ๊ธ ๋ฐ Nginx์ ์๋ ์ ์ฉ
์๋ ๋ช ๋ น์ด ํ๋๋ก ์ธ์ฆ์ ๋ฐ๊ธ๊ณผ Nginx ์ค์ ์๋ ๋ณ๊ฒฝ์ด ๋์์ ์ด๋ฃจ์ด์ง๋๋ค. ๋๋ฉ์ธ ์ฃผ์๋ ๋ณธ์ธ์ ๋๋ฉ์ธ์ผ๋ก ๊ต์ฒดํฉ๋๋ค.
sudo certbot --nginx -d ๋๋ฉ์ธ์ฃผ์ -d www.๋๋ฉ์ธ์ฃผ์
๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋ช ๊ฐ์ง ์ง๋ฌธ์ ๋ตํด์ผ ํฉ๋๋ค.
์ฒซ ๋ฒ์งธ๋ก ์ด๋ฉ์ผ ์ฃผ์ ์ ๋ ฅ์ ์์ฒญํฉ๋๋ค. ์ธ์ฆ์ ๋ง๋ฃ ์๋ฆผ๊ณผ ๋ณด์ ๊ณต์ง๋ฅผ ๋ฐ์ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๋ ๋ฒ์งธ๋ก ์๋น์ค ์ฝ๊ด ๋์ ์ฌ๋ถ๋ฅผ ๋ฌป์ต๋๋ค. A๋ฅผ ์ ๋ ฅํด ๋์ํฉ๋๋ค.
์ธ ๋ฒ์งธ๋ก ๋ด์ค๋ ํฐ ์์ ์ฌ๋ถ๋ฅผ ๋ฌป์ต๋๋ค. Y ๋๋ N ์ค ์ ํํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก HTTP๋ก ์ ์ํ์ ๋ ์๋์ผ๋ก HTTPS๋ก ๋ฆฌ๋ค์ด๋ ํธํ ์ง ๋ฌป์ต๋๋ค. 2๋ฒ(Redirect)์ ์ ํํ๋ฉด http://๋ก ์ ์ํด๋ ์๋์ผ๋ก https://๋ก ์ด๋ํ๋๋ก ์ค์ ๋ฉ๋๋ค.
Successfully deployed certificate ๋ฉ์์ง๊ฐ ๋ํ๋๋ฉด ๋ฐ๊ธ์ด ์๋ฃ๋ ๊ฒ์ ๋๋ค.
6. HTTPS ์ ์ฉ ํ์ธํ๊ธฐ
๋ฐ๊ธ์ด ์๋ฃ๋๋ฉด ๋ธ๋ผ์ฐ์ ์์ ๋๋ฉ์ธ์ ์ ์ํด ํ์ธํฉ๋๋ค.
์ฃผ์์ฐฝ์ ์๋ฌผ์ ์์ด์ฝ์ด ํ์๋๋ฉด HTTPS๊ฐ ์ ์ ์ ์ฉ๋ ๊ฒ์ ๋๋ค. http://๋ก ์ ์ํ์ ๋ ์๋์ผ๋ก https://๋ก ์ด๋ํ๋์ง๋ ํ์ธํฉ๋๋ค.
SSL ์ ์ฉ ์ํ๋ฅผ ๋ ์์ธํ ํ์ธํ๋ ค๋ฉด SSL Labs(ssllabs.com/ssltest)์์ ๋๋ฉ์ธ์ ์ ๋ ฅํด ์ธ์ฆ์ ๋ฑ๊ธ๊ณผ ๋ณด์ ์ค์ ์ ์ ๊ฒํ ์ ์์ต๋๋ค. A ๋ฑ๊ธ ์ด์์ด๋ฉด ์ํธํ ์ํ์ ๋๋ค.
7. ์ธ์ฆ์ ์๋ ๊ฐฑ์ ์ค์
Let's Encrypt ์ธ์ฆ์๋ 90์ผ๋ง๋ค ๊ฐฑ์ ์ด ํ์ํฉ๋๋ค. Certbot์ ์ค์น ์ ์๋์ผ๋ก ๊ฐฑ์ ํ์ด๋จธ๋ฅผ ๋ฑ๋กํ๊ธฐ ๋๋ฌธ์ ๋ณ๋ ์์ ์์ด๋ ์๋ ๊ฐฑ์ ๋ฉ๋๋ค.
์๋ ๊ฐฑ์ ์ด ์ ๋๋ก ์ค์ ๋๋์ง ํ์ธํฉ๋๋ค.
sudo systemctl status certbot.timer
active ์ํ์ด๋ฉด ์๋ ๊ฐฑ์ ์ด ํ์ฑํ๋ ๊ฒ์ ๋๋ค.
์ค์ ๋ก ๊ฐฑ์ ์ด ์ ๋๋์ง ํ ์คํธ๋ง ํด๋ณด๋ ค๋ฉด(์ค์ ๊ฐฑ์ ์์ด ์๋ฎฌ๋ ์ด์ ) ์๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
sudo certbot renew --dry-run
Congratulations, all simulated renewals succeeded ๋ฉ์์ง๊ฐ ๋์ค๋ฉด ์๋ ๊ฐฑ์ ์ด ์ ์์ ์ผ๋ก ๋์ํฉ๋๋ค.
8. ์์ฃผ ๋ฐ์ํ๋ ์ค๋ฅ์ ํด๊ฒฐ๋ฒ
์ค๋ฅ 1. Challenge failed – Could not connect to domain ๋๋ฉ์ธ์ด ์๋ฒ IP๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ฐ๋ฆฌํค๊ณ ์์ง ์๊ฑฐ๋, DNS ์ ํ๊ฐ ์์ง ์๋ฃ๋์ง ์์ ๊ฒฝ์ฐ์ ๋๋ค. DNS ์ค์ ์ ๋ค์ ํ์ธํ๊ณ ์ ํ๊ฐ ์๋ฃ๋ ํ ๋ค์ ์๋ํฉ๋๋ค.
์ค๋ฅ 2. 80๋ฒ ํฌํธ ์ฐ๊ฒฐ ์คํจ ๋ฐฉํ๋ฒฝ์์ 80๋ฒ ํฌํธ๊ฐ ์ฐจ๋จ๋์ด ์๋ ๊ฒฝ์ฐ์ ๋๋ค. sudo ufw allow 80 ๋ช ๋ น์ผ๋ก ํฌํธ๋ฅผ ์ด๊ณ ๋ค์ ์๋ํฉ๋๋ค.
์ค๋ฅ 3. Nginx ์ค์ ์ค๋ฅ Certbot์ด Nginx ์ค์ ์ ์์ ํ๋ ๊ณผ์ ์์ ๊ธฐ์กด ์ค์ ๊ณผ ์ถฉ๋์ด ๋ฐ์ํ ๊ฒฝ์ฐ์ ๋๋ค. sudo nginx -t ๋ช ๋ น์ผ๋ก ์ค์ ํ์ผ ๋ฌธ๋ฒ์ ํ์ธํ๊ณ , ์ค๋ฅ๊ฐ ์๋ค๋ฉด ์์ ํ sudo systemctl reload nginx๋ฅผ ์คํํฉ๋๋ค.
์ค๋ฅ 4. Too many certificates issued ๊ฐ์ ๋๋ฉ์ธ์ ์งง์ ์๊ฐ ์์ ๋๋ฌด ๋ง์ ์ธ์ฆ์ ๋ฐ๊ธ์ ์๋ํ ๊ฒฝ์ฐ์ ๋๋ค. Let's Encrypt๋ ๋๋ฉ์ธ๋น ์ฃผ๋น 5ํ ๋ฐ๊ธ ์ ํ์ด ์์ต๋๋ค. ์ ์ ๊ธฐ๋ค๋ฆฐ ํ ๋ค์ ์๋ํฉ๋๋ค.
9. ์ ๋ฆฌ
์ค๋ ๋ฐฐ์ด ํต์ฌ์ ์ ๋ฆฌํฉ๋๋ค.
- Let's Encrypt๋ ๋ฌด๋ฃ๋ก SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด ์ฃผ๋ ๋น์๋ฆฌ ์ธ์ฆ ๊ธฐ๊ด์ ๋๋ค.
- Certbot์ ์ฌ์ฉํ๋ฉด ๋ช ๋ น์ด ๋ช ์ค๋ก ์ธ์ฆ์ ๋ฐ๊ธ๊ณผ Nginx ์ค์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
- ์ธ์ฆ์ ์ ํจ ๊ธฐ๊ฐ์ 90์ผ์ด์ง๋ง Certbot์ ์๋ ๊ฐฑ์ ๊ธฐ๋ฅ์ผ๋ก ๋ณ๋ ๊ด๋ฆฌ๊ฐ ํ์ ์์ต๋๋ค.
- ๋ฐ๊ธ ์ ๋๋ฉ์ธ DNS ์ค์ ์๋ฃ, 80๋ฒ ํฌํธ ์คํ, Nginx ์คํ ์ฌ๋ถ๋ฅผ ๋ฐ๋์ ํ์ธํฉ๋๋ค.