1. ๋๋ฉ์ธ ์ฐ๊ฒฐ
์ด์ ์ ๊ฐ๋น์์์ ๊ตฌ๋งค๋ฅผ ํด๋๊ณ ์์ฐ๋ ๋๋ฉ์ธ์ด ์์ด์, ๊ทธ ๋๋ฉ์ธ์ ๋ด IP๋ฅผ ์ฐ๊ฒฐํ๋ค.
10๋ถ ์ ๋ ๊ธฐ๋ค๋ฆฌ๋ฉด ๋ด ๋๋ฉ์ธ๊ณผ IP๊ฐ ๋งค์นญ์ด ๋๋ค.
2. Certbot ์ค์น (Let's Encrypt)
Let's Encrypt๋ SSL ์ธ์ฆ์๋ฅผ ๋ฌด๋ฃ๋ก ๋ฐ๊ธํด HTTPS๋ฅผ ๋๋ฆฌ ๋ณด๊ธํ๊ธฐ ์ํด ์์๋ ๋น์๋ฆฌ๊ธฐ๊ด์ด๋ค. ์ง์ PEM key๋ค์ ๋ฐ๊ธ๋ฐ์์ ์ค์ ํด์ฃผ์ด๋ ๋์ง๋ง ๋ง์ด ๋ฒ๊ฑฐ๋กญ๊ธฐ ๋๋ฌธ์, ์น์๋ฒ์ ์ฝ๊ฒ ์ธํ ํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ๋ค์ด ์๋ค.
wget
์ผ๋ก Certbot-auto๋ฅผ ๋ค์ด๋ฐ์ ์ค์นํ๋ ๋ธ๋ก๊ทธ๋ค์ ๋ณด๊ณ ๋ฐ๋ผํ๋๋ฐ ํด๋น ํ์ผ์ด ์กด์ฌํ์ง ์๋๋ค.
๋์ snap
์ผ๋ก Certbot์ ์ค์นํ ์ ์๋ค. apt์ ๋น์ทํ(?) ํจํค์ง ๊ด๋ฆฌ ์์คํ
์ด๋ค.
- snap์ ์คํํ๊ธฐ ์ํด snapd๋ฅผ ์ค์นํ๋ค.
sudo apt-get install snapd
- Certbot์ ์ค์นํ๊ณ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ์ฐ๊ฒฐํ๋ค.
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
3. ์ธ์ฆ์ ๋ฐ๊ธ, Nginx ์ค์
1) ์๋์ ๋ช ๋ น์ด๋ฅผ ํตํด SSL ์ธ์ฆ์๋ฅผ ๋ฐ๊ธ๋ฐ๊ณ nginx ์ค์ ์ ๊ตฌ์ฑํ๋ค.
sudo certbot --nginx
์ด๊ฒ์ ๊ฒ ๋ฌผ์ด๋ณธ๋ค.
> Enter email address #์ธ์ฆ์ ๊ฐฑ์ ์ด ํ์ํ๊ฑฐ๋ ๊ณต์ง์ฌํญ์ด ์์ ๋ ๋ฉ์ผ๋ก ์๋ ค์ค๋ค.
> ... Do you agree? #์ด์ฉ ์ฝ๊ด ๋์
> Would you be willing to share your email address.. #๋ด ์ด๋ฉ์ผ ์ฃผ์ ๊ณต์
> **Enter the domain name** #๋๋ฉ์ธ ์ฃผ์ ์
๋ ฅ
2) ๋ชจ๋ ์ ์ฐจ๊ฐ ๋๋๋ฉด ์ธ์ฆ์ ๋ฐ๊ธ์ด ์๋ฃ๋๋ค.
์ธ์ฆ์์ ํค๊ฐ ์ ์ฅ๋ ์์น๋ฅผ ํ์ธํ ์ ์๋ค.
- ๊ฒฐ๊ณผ ํ์ธ
์๋ฌผ์ ๊ฐ ์ ๊ฑธ๋ ค ์๋ค.
/etc/nignx/sites-available/default ๋ฅผ ํ์ธํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ถ๋ถ์ด ์ถ๊ฐ๋์ด ์๋ค.
server {
...
...
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/[๋๋ฉ์ธ]/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/[๋๋ฉ์ธ]/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
3-1. ์ธ์ฆ์ ์๋๊ฐฑ์
Let’s Encrypt์์ ๋ฐ๊ธํ๋ ์ธ์ฆ์๋ 90์ผ์ ํ๋ฒ์ฉ ์ง์ ๊ฐฑ์ ์ ํด์ฃผ์ด์ผ ํ๋ค.
certbot renew #์ธ์ฆ์ ๊ฐฑ์ ํ๊ธฐ
๋คํํ ์ฐ๋ถํฌ์๋ ์ ํด์ง ์ผ์์ ๋ฐ๋ณต์ ์ผ๋ก ํน์ ์์
์ ํ ์ ์๋ ํ๋ก๊ทธ๋จ์ด ๊ธฐ๋ณธ ์ค์น๋์ด ์๋ค.
์ฐธ๊ณ
4. ๋ฆฌ๋ค์ด๋ ํธ ์ค์
๋๊ฐ์ง ๊ฒฝ์ฐ์ ๋ฆฌ๋ค์ด๋ ํธ ์ค์ ์ ํ๋ค.
ip์ฃผ์๋ก ์์ฒญ์ด ๋ค์ด์์ ๋ ๋๋ฉ์ธ์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ, http๋ก ์์ฒญ์ด ๋ค์ด์์ ๋ https๋ก ๋ฆฌ๋ค์ด๋ ํธ.
1) IP ์ฃผ์๋ก ์์ฒญ์ด ๋ค์ด์์ ๋ ๋๋ฉ์ธ์ผ๋ก ๋ฆฌ๋ค์ด๋ ํธ๊ฐ ๋๋๋ก ์ค์ ์ ํด๋ณด์.
server {
listen 80;
listen [::]:80;
server_name 13.xxx.xxx.62;
return 301 https://9yujin.shop$request_uri;
}
2) 80๋ฒ ํฌํธ(http)๋ก ์ ์์ ์๋ํ์ ๋ https๋ก ๋ฆฌ๋ค์ด๋ ํธ๊ฐ ๋๋๋ก ์ค์ ์ ํด๋ณด์.
๋ฐฉ๊ธ ํ์ธํ /etc/nignx/sites-available/default
๋ฐ๋ก ์๋ ์๋ฒ ๋ธ๋ก์ ์๊ณผ ๊ฐ์ด ๋ฐ๊พธ์ด ์ค๋ค.
return 404 (ํด๋น ํ์ด์ง ์์)์ ์ง์ฐ๊ณ , return 301 [Redirection ์ฃผ์];
๋ฅผ ์
๋ ฅํ๋ค.
์ฌ๊ธฐ์ 301์ HTTP Status Code๋ก, ์๊ตฌ ์ด๋(Permanently moved) ์ ์๋ฏธํ๋ค. ์ฆ, "๋ค๊ฐ ์์ฒญํ ํ์ด์ง๊ฐ ์๊ตฌํ ์ด์ ๋์์ผ๋ฏ๋ก ์ด ์ฃผ์๋ก ๋ค์ ์ ์์ ์๋ํด ๋ด๋ผ."๋ผ๋ ์๋ฏธ์ด๋ค. ์ฐธ๊ณ