๊ฐ์
certbot์ ํตํด ๋ฐ๊ธํ *.mydomain.com ์ด๋ผ๋ ์์ผ๋์นด๋ ์ฃผ์๊ฐ renew๋ก ๊ฐฑ์ ์ด ์ ๋ผ์ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋์๋ค.
์์ผ๋์นด๋๋ ์๋ ๊ฐฑ์ ์ด ๊ฐ๋ฅํ๊ธด ํ๋ฐ ๊ณผ์ ์ด ๋๋ฌด ๋ณต์กํ์ฌ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ๊ฒ ๋์๊ณ , ์ด๋ฒ์ ๊ฐ์ฅ ๊น๋ํ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๊ณ ์ ํ๋ค.
์๋ ๋ด์ฉ์ webํธ์คํ
, ํ๋ก์ ํธ์คํ
์ ์์๋ก ๋๊ณ ์๋ค.
๋ํ ๊ฐ๋น์ ๋ฑ ๋ณ๋๋ก ๋๋ฉ์ธ ๊ณต๊ธ์
์ฒด์์ ACME ์๋ ์ธ์ฆ์ ํตํ์ง ์์์ ๋ฒ๊ฑฐ๋ก์์ ์ค์ผ ์ ์๋ค.
ํ๊ฒฝ
- Ubuntu 22.04
- certbot
- nginx
- code-server (์ค์น๋์ด์์. 8080 ํฌํธ ์ฌ์ฉ)
์งํ
1. Certbot ์ค์นํ๊ธฐ
Ubuntu/Debian
sudo apt update
sudo apt install certbot
sudo apt install python3-certbot-nginx # Nginx์ acme์ฑ๋ฆฐ์ง๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ
sudo apt install python3-certbot-apache # Apache์ acme์ฑ๋ฆฐ์ง๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ
CentOS/RHEL
sudo yum install certbot
sudo yum install python3-certbot-nginx # Nginx์ acme์ฑ๋ฆฐ์ง๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ
sudo yum install python3-certbot-apache # Apache์ acme์ฑ๋ฆฐ์ง๋ฅผ ์ํ ํ๋ฌ๊ทธ์ธ
์์ ์์๋ apache๋ ์กด์ฌํ์ง๋ง, ๋ด๊ฐ ์๋ํ๋ ๋ฐฉ์์ nginx ์์ฃผ๋ก๋ง ์์ฑํ์๊ธฐ ๋๋ฌธ์ nginxํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋๋ก ํ๋ค.
2. ์ธ์ฆ์ ๋ฐ๊ธํ๊ธฐ
!!!! ํด๋น ๋ฐฉ์์ ์งํํ๊ธฐ ์ ์ ๋ฌด์กฐ๊ฑด ๋๋ฉ์ธ ์ ๊ณต ์ ์ฒด์ ๋ด๊ฐ ์ฌ์ฉํ 1์ฐจ ๋๋ฉ์ธ mydomain.com, 2์ฐจ ๋๋ฉ์ธ second.mydomain.com ๋ฑ์ด ๋ฏธ๋ฆฌ ์ถ๊ฐ๊ฐ ๋์ด์์ด์ผ ํ๋ค!!!!
์๋ ๋ช ๋ น์ด๋ฅผ ํตํด SSL ๋ฐ๊ธ์ ์๋ํ๋ค.
sudo certbot certonly --nginx --cert-name mydomain.com -d mydomain.com -d www.mydomain.com -d code.mydomain.com
# mydomain.com๊ณผ www.mydomain.com๊ณผ code.mydomain.com์ ๋ํ ์ธ์ฆ์๋ฅผ izvillain.com์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ํฉ์ณ์ ๋ฐ๊ธ
์ค๋ช
sudo certbot: SSL์ ๋ฐ๊ธํ๊ณ ์ ์ฅํ ๋ Certbot์ด ์์คํ ๋๋ ํฐ๋ฆฌ์ ์ ๊ทผํ์ฌ ์์ ์ ์ํํ๊ธฐ ๋๋ฌธ์ sudo๊ถํ์ด ํ์certonly: ํด๋น ์ต์ ์ด ์๋ค๋ฉด nginx๋ apache ํ๋ฌ๊ทธ์ธ์ ํตํด certbot์ด ์์์ ๋ง. confํ์ผ์ ์์ ํ๊ฒ ๋๋ค.--nginx: ์ธ์ฆ ๋ฐฉ์ ์ค ์น์๋ฒ์ธ์ฆ๋ฐฉ์์ธ nginx๋ฅผ ์ ํ--cert-name: ์ธ์ฆ์๋ค์ ๋ฌถ์ด๋ ๋ํ ์ด๋ฆ (๋์ค์ SSL ๋๋ ํฐ๋ฆฌ๊ฐ ํด๋น์ด๋ฆ์ผ๋ก ์์ฑ๋จ)-d: ์ด๋ค ๋๋ฉ์ธ์ ๋ํ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ ๊ฒ ์ธ์ง ์ ํ
3. Nginx Https(80 TO 443) ์๋ ์ ๊ทธ๋ ์ด๋ ๊ตฌ์ฑ
์ฌ๊ธฐ๊น์ง ์ ์งํํ๋ค๋ฉด SSL์ธ์ฆ์๋ /etc/letsencrypt/live/mydomain.com/ ์ ์กด์ฌํ ๊ฒ์ด๋ค.
์ด์ ํ ์ผ์ Nginx ์น์๋ฒ๋ก ๋ค์ด์ค๋ ๋ชจ๋ ์์ฒญ์ https๋ก ์
๊ทธ๋ ์ด๋ํ๋๋ก ์ ๋ํ๊ฒ ํ๋ ๊ฒ์ด๋ค.
์๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์ฌ, ๊ณต์ฉ http.conf ํ์ผ์ ๋ง๋ค๋๋ก ํ์
cd /etc/nginx/sites-available
sudo vi http.conf
#shared http
server{
listen 80;
return 308 https://$host:443$request_uri; #๋ค์ด์ค๋ ๋ชจ๋ 80๋ฒ ํฌํธ ์์ฒญ์ ๋ํด 443์ผ๋ก ์
๊ทธ๋ ์ด๋
}
:wq ๋ก ์ ์ฅ ๋ฐ ๋์ค๊ธฐ
๋งํฌ ์์ฑ
sudo ln -s /etc/nginx/sites-available/http.conf /etc/nginx/sites-enabled/http.conf
nginx ์ ํจ์ฑ ๊ฒ์ฌ
sudo nginx -t
Success๊ฐ ์ ํ์๋๋ค๋ฉด ๋ฌธ์ ์๋ ์ํ๋ค.
4. SSL ์ ์ฉํ๊ธฐ
์กฐ๊ธ๋ง ๋ ํ๋ฉด ๊ธฐ์ด์์
์ ์๋ฃ๋๋ค.
์๋ ๋ช
๋ น์ด๋ฅผ ํตํด SSL์ ์ ์ฉํ ๋๋ฉ์ธ์ ๋ํ conf ํ์ผ์ ๋ง๋ค์ด์ฃผ๋๋ก ํ์.
sudo vi /etc/nginx/sites-available/mydomain.com.conf
์๋ .confํ์ผ ์์ 1๋ฒ๊ณผ 2๋ฒ์ ๊ฐ์ ์น์ฌ์ดํธ๋ก ๊ฐ๊ฒ ํ๋ ์์๊ณ ,
3๋ฒ์ ๋ณ๋๋ก ๋ด๋ถ์์ ํธ์คํ
ํ๋ ๋ค๋ฅธ ์๋ฒ๋ก ์ด๋ํ๊ฒ ํ๋ ์์๋ค.
๋์ ๊ฒฝ์ฐ๋ code-server๋ฅผ ๋ก์ปฌํฌํธ 8080์ผ๋ก ์ด๊ณ ,
3๋ฒ๊ณผ ๊ฐ์ด ๊ตฌ์ฑํ์ฌ ์ธ๋ถ์์๋ code.mydomain.com์ผ๋ก๋ง ์ ์ ๊ฐ๋ฅํ๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
#mydomain.com์ ์ฌ์ฉํ๋ ๋ชจ๋ ํธ์คํ
๋ค
#1: ์นํธ์คํธ
server {
listen 443 ssl;
server_name mydomain.com; #1์ฐจ๋๋ฉ์ธ์ผ๋ก ๋ค์ด์ค๋ ์ฃผ์ ์บ์น
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; #
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
location / {
root /home/user/myweb/build/web; #ํธ์คํ
ํ ์น์ฌ์ดํธ ๊ฒฝ๋ก
index index.html; #์์ํ ์น์ฌ์ดํธ ์ธ๋ฑ์ค ํ์ผ
}
}
#2: ์นํธ์คํธ www์ ๋ํด ๊ฐ์ ๋ก mydomain.com์ผ๋ก ์ด๋
server {
listen 443 ssl;
server_name www.mydomain.com; #2์ฐจ ๋๋ฉ์ธ www๋ก ๋ค์ด์ค๋ ์ฃผ์ ์บ์น
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
return 301 https://mydomain.com$request_uri; #์ด๋์ํฌ ์ค์ ์ฃผ์
}
#3: ํ๋ก์ํธ์คํธ (๋๋ ๊ฐ์ํธ์คํธ)
server {
listen 443 ssl;
server_name code.mydomain.com; #2์ฐจ ๋๋ฉ์ธ code๋ก ๋ค์ด์ค๋ ์ฃผ์ ์บ์น
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080; #๋ก์ปฌ์์ ํธ์คํ
์ค์ธ ์ค์ ์ฃผ์
proxy_set_header Host code.mydomain.com; #๋ฐ๋์ ์์ฒญ URL ๊ณผ ๋์ผํ๊ฒ ์ ์ด์ผํจ (์ค๋ฅ๊ฐ ๋๋ค๋ฉด ๋๋ถ๋ถ ์ฌ๊ธฐ์ ๋ฌธ์ , ํฌํธ๋ ๋ถ์ฌ์ ์๋ํด๋ณด๊ธฐ)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
#proxy_set_header Accept-Encoding gzip;
}
}
:wq ๋ก ์ ์ฅ ๋ฐ ๋์ค๊ธฐ
ํ์ํ๋ค๋ฉด server{} ํญ๋ชฉ์ ๋ ์ถ๊ฐํ์ฌ info.mydomain.com ๋๋ sample.mydomain.com ๊ฐ์ ๋ค์ํ 2์ฐจ ๋๋ฉ์ธ๋ ํธ์คํ ํ ์ ์๋ค.
๋งํฌ ์์ฑ
sudo ln -s /etc/nginx/sites-available/mydomain.com.conf /etc/nginx/sites-enabled/mydomain.com.conf
๋งํฌ๋ฅผ ์์ฑํ ์ด์ ๋ nginx ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์ธํด sites-enabled ํด๋ ์์ ์๋ .conf ํ์ผ๋ง ์ฝ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋์ค์ ํด๋น ์ฌ์ดํธ๋ฅผ ์ ์ ์ ์ฐ๋ ค๋ฉด mydomain.com.conf.bak ์ผ๋ก ์ด๋ฆ๋ง ๋ฐ๊พธ๋ฉด ๋๋ค.
nginx ์ ํจ์ฑ ๊ฒ์ฌ
sudo nginx -t
Success ๊ฐ ์ ์ถ๋ ฅ๋๋ฉด ๋ฌธ์ ์์.
Nginx ์๋น์ค ์ฌ์์
sudo systemctl restart nginx
๋ด๊ฐ ์ํ๋ ๋๋ฉ์ธ์ผ๋ก ์ ์ด๋์ด ๋๋์ง ํ์ธ์ด ๋๋ฉด ๊ธฐ์ด ๊ณต์ฌ๋ ๋ชจ๋ ๋์ด๋ค.
5. (์ ํ์ฌํญ) SSL ์๋๊ฐฑ์ ๊ตฌ์ฑ
์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ฉด certbot์ผ๋ก ์์ฑํ ๋ชจ๋ SSL๋ฅผ ๊ฐฑ์ ํ ์ ์๋ค.
sudo certbot renew
๊ทผ๋ฐ 3๊ฐ์๋ง๋ค ๊ฐฑ์ ํด์ฃผ๋ ค๊ณ ์ ๊ฒฝ์ ์จ์ผํ๋ค๋๊ฒ ์ฌ๊ฐ ๊ท์ฐฎ์ ์ผ์ด ์๋ ์ ์๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ฐ์ฅ ์ฌํํ ๋ฐฉ๋ฒ์ ๋ฆฌ๋ ์ค์ ์๋ํ ๊ธฐ๋ฅ์ธ crontab์ ์ฌ์ฉํด์ ๊ฐฑ์ ๋๋๋ก ๊ตฌ์ฑํ๋ฉด ๋๋ค.
์ฐ์ ์๋ ๋ช ๋ น์ด๋ก ์ํ๋ ๋๋ ํ ๋ฆฌ์ certbot๊ด๋ จ๋ ํด๋์ ํ์ผ์ ๋ง๋ค๋๋ก ํ์
cd /home/user #๋๋ ํ ๋ฆฌ๋ ๊ผญ ์์ ์ ๋๋ ํ ๋ฆฌ์ ๋ง๊ฒ ๋ณ๊ฒฝ
mkdir certbot
cd certbot
vi renew.sh
์์คํฌ๋ฆฝํธ ์์ฑ
#!/bin/bash
LOG_FILE="/home/user/certbot/renew.log" #๋๋ ํ ๋ฆฌ๋ ๊ผญ ์์ ์ ๋๋ ํ ๋ฆฌ์ ๋ง๊ฒ ๋ณ๊ฒฝ
echo "[$(date)] Certbot ๊ฐฑ์ ์์" >> "$LOG_FILE"
certbot renew >> "$LOG_FILE" 2>&1
echo "[$(date)] Certbot ๊ฐฑ์ ์๋ฃ" >> "$LOG_FILE"
:wq ๋ก ์ ์ฅ ๋ฐ ๋์ค๊ธฐ
๋ชจ๋ ๊ทธ๋ฃน์ ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ/์คํ ๊ถํ ๋ถ์ฌ
chmod 777 renew.sh
์ฌ๊ธฐ๊น์ง ๋์๋ค๋ฉด ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด์
sudo ./renew.sh
์คํฌ๋ฆฝํธ๊ฐ ์ ์คํ๋๋์ง๋ ๋ก๊ทธ๊ฐ ์ ๋จ๋์ง ํ์ธํด๋ณด์.
ํฌ๋ก ํญ ์ถ๊ฐ
sudo crontab -e #๋ฐ๋์ sudo๋ก ํด์ผ su๊ถํ์ผ๋ก๋ง ์คํ ๊ฐ๋ฅํ certbot renew ๊ฐ ์ ์์คํ๋จ.
#3์๊ฐ ๋ง๋ค certbot renew
0 */3 * * * /home/user/certbot/renew.sh #๋๋ ํ ๋ฆฌ๋ ๊ผญ ์์ ์ ๋๋ ํ ๋ฆฌ์ ๋ง๊ฒ ๋ณ๊ฒฝ
์ด์ 3์๊ฐ๋ง๋ค ์๋์ผ๋ก SSL์ ๋ชจ๋ ๊ฐฑ์ ํ ์ ์๊ฒ ๋์๋ค.
6. (์ ํ์ฌํญ) 2์ฐจ ๋๋ฉ์ธ ์ถ๊ฐ
ํ์ฌ๊น์ง ๋๋ mydomain.com, www.mydomain.com code.mydomain.com ์ด๋ ๊ฒ 3๊ฐ์ง์ SSL ์ธ์ฆ์๋ฅผ mydomain.com์ด๋ผ๋ ๊ณณ์ ํฉ์ณ์ ๋ฐ๊ธํ๋ค.
๋ง์ฝ info.mydomain.com ์ด๋ผ๋ ์ฃผ์๋ฅผ ์ฐ๋ ์ฌ์ดํธ๋ฅผ ํธ์คํ
ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
!!!! ํด๋น ๋ฐฉ์์ ์งํํ๊ธฐ ์ ์ ๋ฌด์กฐ๊ฑด ๋๋ฉ์ธ ์ ๊ณต ์ ์ฒด์ ๋ด๊ฐ ์ฌ์ฉํ 1์ฐจ ๋๋ฉ์ธ mydomain.com, 2์ฐจ ๋๋ฉ์ธ second.mydomain.com ๋ฑ์ด ๋ฏธ๋ฆฌ ์ถ๊ฐ๊ฐ ๋์ด์์ด์ผ ํ๋ค!!!!
์๋ ์ฝ๋๋ฅผ ํตํด info.mydomain.com ์ธ์ฆ์๋ฅผ ์ถ๊ฐํ์.
sudo certbot certonly --nginx --cert-name mydomain.com -d mydomain.com -d www.mydomain.com -d info.mydomain.com
์ด๋ฒ์ ์ฒ์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ ๋๋์ ๋ฌ๋ฆฌ
- - - - - - - - - - - - - - - - - - - - - - - - - -
You are updating certificate izvillain.com to include new domain(s):
+ info.mydomain.com
You are also removing previously included domain(s):
(None)
Did you intend to make this change?
- - - - - - - - - - - - - - - - - - - - - - - - - -
(U)pdate certificate/(C)ancel: U
๋ผ๋ ๋ฉ์์ง๊ฐ ๋ฌ๋ค
์ถ๊ฐ๋๋ ๋๋ฉ์ธ๊ณผ ์ญ์ ๋ ๋๋ฉ์ธ ๋ชฉ๋ก์ธ๋ฐ ์ญ์ ๋๋ ๊ฒ ์๋์ง ๋ฐ๋์!! ์ ํ์ธํด๋ณด๊ณ U๋ฅผ ์
๋ ฅ.
์ด๋ฒ์๋ ํด๋น 2์ฐจ ๋๋ฉ์ธ์ ์ ๊ทํธ์คํธ์ ๋ฌผ๋ฆฌ๊ธฐ ์ํด nginx์ .confํ์ผ์ ์์ ํ๋๋ก ํ์
vi /etc/nginx/sites-enabled/mydomain.com.conf
... ๋์ ์ถ๊ฐ
#4: ์ถ๊ฐ ์นํธ์คํธ
server {
listen 443 ssl;
server_name info.mydomain.com; #1์ฐจ๋๋ฉ์ธ์ผ๋ก ๋ค์ด์ค๋ ์ฃผ์ ์บ์น
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; #
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem;
location / {
root /home/user/infoweb/build/web; #ํธ์คํ
ํ ์น์ฌ์ดํธ ๊ฒฝ๋ก
index index.html; #์์ํ ์น์ฌ์ดํธ ์ธ๋ฑ์ค ํ์ผ
}
}
:wq ๋ก ์ ์ฅ ๋ฐ ๋์ค๊ธฐ
nginx ์ ํจ์ฑ ๊ฒ์ฌ
sudo nginx -t
Success๊ฐ ์ ํ์๋๋ค๋ฉด ๋ฌธ์ ์๋ ์ํ๋ฏ๋ก nginx ์๋น์ค ์ฌ์์
sudo systemctl restart nginx
์ด์ ์๋ก ์ถ๊ฐํ ์ฃผ์์ธ info.mydomain.com ์ด ์ ์ ์๋๋์ง ํ์ธํด๋ณด์.
7. (์ ํ์ฌํญ) Certbot ์ ์ฉํ ๋ช ๋ น์ด๋ค
sudo certbot certificates: ํ์ฌ certbot์ ํตํด ๋ฑ๋ก๋์ด ์๋ ๋ชจ๋ ์ธ์ฆ์๋ค์ ํ์ํ๋ค.sudo certbot delete --cert-name mydomain.com: ํด๋น ์ด๋ฆ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ธ์ฆ์๋ฅผ ์ญ์ ํ๋ค.sudo certbot renew: ๋ชจ๋ SSL์ธ์ฆ์ ๊ฐฑ์ .
'๐ง Linux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Docker] lsyncd (๋ก์ปฌ) ๋ฐ์ดํฐ ์ด์คํ docker-compose.yaml ๊ตฌ์ฑ (0) | 2025.11.20 |
|---|---|
| [Docker] ์์ฝ๊ฒ NodeJS ํ๋ก์ ํธ ๊ตฌ์ฑ (with docker-compose) (0) | 2025.11.20 |
| [Linux] ์๋ฒ์ Nvidia ๊ทธ๋ํฝ ๋๋ผ์ด๋ฒ ์ค์น (1) | 2024.12.12 |
| [๋ฆฌ๋ ์ค] ๋๋ง์ ๋ช ๋ น์ด ๋ง๋ค๊ธฐ (์ปค์คํ ์ปค๋งจ๋) (1) | 2024.11.29 |
| [Code-Server] ์ฝ๋์๋ฒ์ SSL ์ธ์ฆ์ ์ ์ฉํ๊ธฐ (2) | 2024.01.30 |