Certbot์ ์ฌ์ฉํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์๊ณ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๋์ง ํ์คํ์ง ์๊ฑฐ๋
์ ๊ธฐ๋ฅ์ ์์ฒญํ๋ ค๋ฉด ๋จผ์ ๋ค์์์ ๋์์ ์์ฒญํ์ญ์์ค.
https://community.letsencrypt.org/. ํจ์ฌ ๋ ํฐ ์ปค๋ฎค๋ํฐ๊ฐ ์์ต๋๋ค.
๊ทํ์ ์ง๋ฌธ์ ๋ ๋นจ๋ฆฌ ๋ต๋ณํ ์ ์๋ ํ๋ก์ ํธ์ ์ต์ํ ์ฌ๋๋ค
์ง๋ฌธ.
์ฐ๋ถํฌ 16.04 ์๋ฒ.
2 ๋ฒ์ : Plesk ํจํค์ง, certbot ์ ์ฅ์์ certbot ํจํค์ง.
Certbot ํจํค์ง ๋ฒ์ : 0.21.1
์์น: certbot -d *.works.wtf certonly
์์: Wildcard domains are not supported: *.works.wtf
LetsEncrypt ์ฌ์ดํธ์ ๋ฐ๋ฅด๋ฉด Certbot์ ์ด์ ACMEv2 API์ ํธํ๋ฉ๋๋ค.
/var/log/letsencrypt
์ ์ ์ฅ๋ฉ๋๋ค. ์ํ๋ ๋๋ก ๋๋ฉ์ธ, ์ด๋ฉ์ผ ๋ฐ IP ์ฃผ์๋ฅผ ์์ ๋กญ๊ฒ ์์ ํ ์ ์์ต๋๋ค.N/A, ํ์คํ
DNS-01
์ฑ๋ฆฐ์ง๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ฆ, ์๋ฒ ๋ด์์ DNS ์์ญ์ ์์ ๋ฐ ๊ฒ์ํ๊ณ ์
๋ฐ์ดํธํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ด์ผ ํฉ๋๋ค.
์ด์ ๋ํ ๊น๋ฐ์ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น?
๋จ์ํ ํ๋๊ทธ๊ฐ ์๋๋ผ ๋ฌธ์์์ ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๊ฑฐ๊ธฐ์ ๋์ด๋ ์ฌ๋ฌ DNS ์ ๊ณต์์ ๋ํ ํ๋ฌ๊ทธ์ธ์ ๋๋ค. ๊ทํ์ ๊ฒ์ด ์๋๋ผ๋ฉด ์ฌ๊ธฐ์์ ๊ธฐ๋ฅ ์์ฒญ์ ์ด์ด ์ง์์ ์์ฒญํ ์ ์์ต๋๋ค(์๋ฅผ ๋ค์ด Gandi์ ๊ฐ์ ๊ฒ์ ๋ํด ์ด๋ฏธ ์ผ๋ถ๊ฐ ์ด๋ ค ์์ผ๋ฏ๋ก ์ด๊ธฐ ์ ์ ๊ฒ์์ ์ฌ์ฉํ์ญ์์ค. ์๋ก์ด).
ํ ์๋์, ์ค์ ๋ก certbot >= 0.22
๊ฐ ํ์ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๊ฒ์๋ฌผ์์ ๋์ณ์ ์ฃ์กํฉ๋๋ค.
์๊ฒ ์ต๋๋ค.... ์ค์นํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น? ์์ค์์ ์ปดํ์ผํด์ผ ํ๋์?
PPA์ ๊ฒ์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ pip ๋๋ ์ด์ ์ ์ฌํ ๊ฒ์ ํตํด ์ค์นํ๊ฑฐ๋ ์ค์ ๋ก ์์ค์์ ๋น๋ํ ์ ์์ต๋๋ค.
๋ด๊ฐ ๋น์ ์ด๋ผ๋ฉด ๊ณต์ ํจํค์ง๊ฐ ์ ๋ฐ์ดํธ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด DNS ์ฑ๋ฆฐ์ง๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณผ ์ ์์ต๋๋ค. ์์ผ๋์นด๋ ์์ด ์ด๋ฏธ ๋ชจ๋ ๊ฒ์ด ์๋ํ๋์ง ํ์ธํ ์ ์์ผ๋ฉฐ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ฉด(์ค๋ ๊ฑธ๋ฆฌ์ง ์์์ผ ํจ) ๋ค์์ ์ํํ ์ค๋น๊ฐ ๋ฉ๋๋ค. ์์ผ๋ ์นด๋ ์ธ์ฆ์๋ฅผ ๋ฐ์ผ์ญ์์ค.
์, ์์ค์์ certbot์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
root<strong i="6">@cs12</strong>:~# git clone https://github.com/certbot/certbot
...
root<strong i="7">@cs12</strong>:~# DOMAIN=example.com
root<strong i="8">@cs12</strong>:~# cd certbot
root<strong i="9">@cs12</strong>:~/certbot# ./certbot-auto certonly --manual -d *.$DOMAIN -d $DOMAIN --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
...
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:
qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI
Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue
TXT ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ณ Enter ํค๋ฅผ ๋๋ฆ ๋๋ค. ๋ ํ๋์ ๊ธฐ๋ก์ ์ป๊ฒ ๋ฉ๋๋ค. ๊ทธ๊ฒ๋ ์ถ๊ฐํ์ธ์.
๊ทธ๋ฐ ๋ค์ ๋ ์ฝ๋๊ฐ ๋ฐฐํฌ๋์๋์ง ๋ ๋ฒ์งธ ํฐ๋ฏธ๋ ์ฐฝ์์ ํ์ธํฉ๋๋ค.
root<strong i="15">@cs12</strong>:~# host -t txt _acme-challenge.example.com
_acme-challenge.example.com descriptive text "qqiR_lsa2AjMfoVR16mH4UDbOxy_E02l0K1CNyz1RdI"
_acme-challenge.example.com descriptive text "oMmMa-fDLlebdUhvhMD5MinJ2EeFpdP0F9lUPTShh4w"
๊ด์ฐฎ์ผ๋ฉด ๋์๊ฐ์ Enter ํค๋ฅผ ๋๋ฆ ๋๋ค.
Waiting for verification...
Cleaning up challenges
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-06-11. To obtain a new or tweaked
version of this certificate in the future, simply run certbot-auto
again. To non-interactively renew *all* of your certificates, run
"certbot-auto renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
์ ๋ฐ์ดํธ: ์ธ์ฆ์ ์ค์น, ์ค์ ๋ฐ ๊ฐฑ์ ๋จ๊ณ๊ฐ ํฌํจ ๋ Gist์ ์ ์ฒด
@ArchangeGabriel์ ๋ํด ์์ธํ ๋ต๋ณํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ฐ๋ฆฌ๋ Ubuntu์ฉ ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ๋ ์ค์ด๋ฉฐ ๊ณง ์ถ์๋ ์์ ์ ๋๋ค.
@ohemorange ์ฒ๋ง ์์! ์์งํ ๋งํด์, DNS-01 ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง์ ๋ํ ํต์ฐฐ๋ ฅ์ด ์๋ ์ํ์์ ์์ผ๋์นด๋ ์ธ์ฆ์๋ฅผ ์ป์ผ๋ ค๊ณ ํ๋ ์ฌ๋๋ค์ด ์ ์ ๋๋ ๊ฒ์ ๋ณผ ์ ์์์ง ๋๋ ค์ ์ง๋ง (์ ์ด๋ ์์ง๊น์ง๋) ์ผ์ด๋์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
@talyguryn , ์กฐ์น
์์ผ๋ ์นด๋๋ฅผ ์ฌ์ฉํ์ฌ apex์์ ํ๋์ ์ธ์ฆ์๋ฅผ ์์ฑํ๋ฉด __two__ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
-d "example.com, *.example.com"
_apex์ ๋ํ ์ธ์ฆ์ ์ ๊ณต ๋ฐ apex์ ๋ํ ์์ผ๋์นด๋_
example.com
๋ํด ํ ๋ฒ, *.example.com
๋ํด ๋ค์ ํ ๋ฒ _๋ ๋ฒ_ ๋์ ํ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ ๋ ๋ฒ์งธ ๋์ ์์ ์คํจํ๋ค๊ณ ์๊ฐํ์ง ๋ง์ญ์์ค. ๊ฐ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. DNS์ ์ถ๊ฐ ์ฑ๋ฆฐ์ง๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ ํ๋ฅผ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ๊ณ์ํ์ญ์์ค.
๋ฌธ์ ๊ฐ ์๋ ๋๋ฉ์ธ์ ๋ ์ฝ๊ฒ ๋ณผ ์ ์๋๋ก ์ถ๋ ฅ์ ๋ณ๊ฒฝํด์ผ ํฉ๋๊น?
@AubreyHewes , ์ ๋ ๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. example.com
๋ฐ *.example.com
๋ชจ๋์ ๋ํด ๋จ์ผ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ถํํ๋ certbot์ ์ฌ์ฉํ๋ ค๋ฉด TXT ๋ ์ฝ๋๋ฅผ ๋ ๋ฒ ์์ ํด์ผ ํฉ๋๋ค. ์ด๋ก ์ธํด ๋๋ฉ์ธ ์ค ํ๋์ ๋ํ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์คํจํฉ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
@nathan-alden TXT
๋ ์ฝ๋๋ฅผ ๋์์ ์ค์ ํด์ผ ํฉ๋๋ค. ๋ ๋ฒ์งธ ํญ๋ชฉ์ ์ถ๊ฐํ ๋ ์ฒซ ๋ฒ์งธ ํญ๋ชฉ์ ์ญ์ ํ์ง ๋ง์ญ์์ค.
@nathan-alden
๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ certbot๊ณผ ๊ฐ์ _seems_๊ฐ ๋์ผํ TXT๋ฅผ ๋ค์ ์์ ํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ ๋ฒ์งธ ๊ฐ์ ๋ ๋ฒ์งธ ๋๋ฉ์ธ์ ๋ํ ๊ฒ์ด๋ฏ๋ก ๋ ๋ฒ์งธ ๋๋ฉ์ธ์ ๋ํ ์ TXT ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ฆ
-d "example.com,*.example.com"
ํ๋ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ๋์ ์ example.com
์ด๋ฏ๋ก ์ด์ ๋ํ TXT๋ฅผ ์ถ๊ฐํ์ญ์์ค. ์ ํ ํ ๊ณ์ํ์ญ์์ค.
๋ ๋ฒ์งธ ๋์ ์ *.example.com
๊ฒ์ด๋ฏ๋ก ์ด์ ๋ํ TXT๋ฅผ ์ถ๊ฐํ์ญ์์ค. ์ ํ ํ ๊ณ์ํ์ญ์์ค.
๋๋ ๋์ปค ๋ฒ์ ์ ์ฌ์ฉํ๋ ์ข์ ๊ฒฝํ์ ํ๋ค. ์ฐธ๊ณ ๋ก TXT ํญ๋ชฉ์ TTL์ 1๋ถ ์ ๋๋ก ์ค์ ํ์ฌ ๋ ๋ฒ์งธ ํญ๋ชฉ์ด ์ ํ๋ ๋๊น์ง 1์๊ฐ์ ๊ธฐ๋ค๋ฆด ํ์๊ฐ ์์ต๋๋ค.
docker run -it --name certbot \
-v <certs>:/etc/letsencrypt \
-v <logs>:/var/lib/letsencrypt \
certbot/certbot certonly --manual \
-d *.<domain.com> -d <domain.com> \
--agree-tos \
--manual-public-ip-logging-ok \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory
๊ถ๊ธํ๋ค. dns-01
๊ฐ ํ์ํ ์ด์ ๋ ๋ฌด์์
๋๊น? ํฌํธ 80(๋ชจ๋ ํํ์ http
์ฑ๋ฆฐ์ง)์ ์๋ฒ๋ฅผ ์์ฑํ๊ณ N๊ฐ์ ์์ ํ์ ๋๋ฉ์ธ์ ์์ฑํ๊ณ ์ฐ๊ฒฐํ์ฌ ์์ผ๋์นด๋ ๋๋ฉ์ธ์ ์์ ํ๊ณ ์๋์ง ์กฐ์ฌํ ์ ์์ต๋๊น?
@AubreyHewes , DNS์์ ํ๋์ ์ฑ๋ฆฐ์ง/๋ ์ฝ๋๋ง ํ์ํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ๊ฒ์ ์ถ์ธกํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
4๊ฐ์ ๋๋ฉ์ธ๊ณผ ํด๋น ์์ผ๋์นด๋์ ๋ํด ํ๋์ ์ธ์ฆ์๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๋๋ฉ์ธ์๋ ํ๋์ TXT _acme-challenge๋ง ์์ต๋๋ค. 3๊ฐ์ ๋๋ฉ์ธ์ด certbot ์ถ๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ฑ๋ฆฐ์ง์์ ์๋ํ๊ณ ์คํํ ๋๋ง๋ค ๊ฐ์ด ๋์ผํ ๊ฒ์ฒ๋ผ ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์๋นํ ์ผ๊ด์ฑ์ด ์์ต๋๋ค.
๋ค ๋ฒ์งธ ๋๋ฉ์ธ์ ์ถ๋ ฅ์ ์ฒซ ๋ฒ์งธ ๋ ์ฝ๋์์ ์๋ํ์ง ์์ง๋ง ๋ ๋ฒ์งธ ๋๋ฉ์ธ์์๋ ์๋ํ๋ฉฐ ์ด ๋๋ฉ์ธ์ certbot์ ์คํํ ๋๋ง๋ค ๋ณ๊ฒฝ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๋ช ๋ น์ ์ฌ์ฉํฉ๋๋ค.
/usr/bin/certbot --renew-by-default certonly --manual --server https://acme-v02.api.letsencrypt.org/directory --preferred-challenges dns-01 -w /usr/share/nginx/letsencrypt-root/ -d *.domain1.sk -d domain1.sk -d *.domain2.sk -d domain2.sk -d *.domain3.sk -d domain3.sk -d *.domain4.sk -d domain4.sk
์ํ์ฐฉ์ค๋ฅผ ๊ฑฐ์ณ ์ด ์์ ์ ์ํํ์ต๋๋ค. ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง ๋ ๊ฐ์ ๋์ผํ DNS ๋ ์ฝ๋๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ์ฌ์ค์ ๋ชฐ๋์ต๋๋ค :-) ๋ค์์ ์๋ํด ๋ณด๊ฒ ์ต๋๋ค.
@robertvalik example.com
๋ฐ *.example.com
ํฌํจํ์ฌ ๋ ๊ฐ์ง ๋ค๋ฅธ ์ ํจ์ฑ ๊ฒ์ฌ์ ๋ํด ๋์ผํ TXT
๋ ์ฝ๋ ๊ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Let's Encrypt๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ 30์ผ ๋์ ์ธ์ฆ์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ณ์ ์ด ์ต๊ทผ์ ์ธ์ฆํ ๊ฒฝ์ฐ ๋ค์ ์ธ์ฆํ์ง ์๊ณ ๋ ๋ ๋ง์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Certbot ์ ํ(#5342)์ผ๋ก ์ธํด Certbot์ ๋ค์ ํ์ธํ์ง ์๋๋ผ๋ ๋์ผํ TXT
๋ ์ฝ๋๋ฅผ ๋ค์ ์ค์ ํ๋๋ก ์์ฒญํฉ๋๋ค.
๋ฐ๋ผ์ ์ด๋ฆ ์ค ํ๋์ ๋ํด ์ด๋ฏธ ์ ํจํ ์ธ์ฆ์ด ์์๊ธฐ ๋๋ฌธ์ ํ์ํ DNS ๋ ์ฝ๋๊ฐ ๋ ์ด์ ์กด์ฌํ์ง ์๋๋ค๋ ์ฌ์ค์ด ๋ฌธ์ ๊ฐ ๋์ง ์์์ ๊ฒ์ ๋๋ค.
@francoism90 ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ์์ผ๋์นด๋ ๋๋ฉ์ธ์ ์ํ ์ ์์ต๋๋ค. ํ๋๋ ์ ์ ํ์ ๋๋ฉ์ธ์ ๊ฑฐ์ ์ ๊ณตํ์ง ์์ ์ ์๊ณ ๋ค๋ฅธ ํ๋๋ ์ ์ฌ์ ์ผ๋ก ๋ฌดํํ ํ์ ๋๋ฉ์ธ(์: ์๋น์ค๋ก์์ ์ํํธ์จ์ด)์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํ์์ ๊ฒฝ์ฐ(๋ด ๊ฒฝ์ฐ) ์ด๋ฏธ DNS ํ์ผ์ ์์ผ๋์นด๋๊ฐ ์๊ณ ์ค์ ๋ก ์์์ ํ์ ๋๋ฉ์ธ์ด ์ ๋๋ก ํ์ธ๋์ด์ผ ํฉ๋๋ค. ์ด ์๋๋ฆฌ์ค์ ๋ํด http ์ฑ๋ฆฐ์ง ํ์์ ์ ๊ณตํ ์ ์๋์ง ๊ถ๊ธํฉ๋๋ค. ๋ชจ๋ ๋ ธ๋ ฅ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
๋ฐ๊ธํ์ฌ ์ธ์ฆ์ ์์ฑ์ ์ฑ๊ณตํ์ต๋๋ค.
./certbot-auto certonly --manual -d *.example.com -d example.com --agree-tos --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
์ด์ ์ธ์ฆ์๋ฅผ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ์ด ๊ถ๊ธํฉ๋๋ค.
<> certbot renew
<> certbot-renew
<> certbot-auto renew
ํผ๋์ค๋ฌ์์ ./certbot-auto renew
์์ฒญํ ๋ ๋์ผํ ๋ช
๋ น์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์๋ํ์ง๋ง ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ธ์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
์์ผ๋์นด๋ ์ธ์ฆ์ ์๋ํํ ์ ์์ต๋๊น?
@ufo911 ๋ฌผ๋ก ์ด์ฃ . ์๋ฅผ ๋ค์ด Certbot์ RFC 2136 ํ๋ฌ๊ทธ์ธ ์ฌ์ฉ :
certbot certonly \
--dns-rfc2136 \
--dns-rfc2136-credentials ~/.secrets/certbot/rfc2136.ini \
--server https://acme-v02.api.letsencrypt.org/directory \
-d example.com \
-d "*.example.com"
๋๋ acme-dns ์๋ ์ธ์ฆ ํํฌ :
certbot certonly \
--debug-challenges \
--manual \
--manual-auth-hook /etc/letsencrypt/acme-dns-auth.py \
--server https://acme-v02.api.letsencrypt.org/directory \
-d example.com \
-d "*.example.com"
https://certbot.eff.org/docs/using.html
https://community.letsencrypt.org/t/getting-wildcard-certificates-with-certbot/56285
๋์์ด ํ์ํ๋ฉด Let's Encrypt ํฌ๋ผ ์ ์ฃผ์ ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
@mnordhoff
๊ฐฑ์ ํ ๋๋ง๋ค DNS TXT ๋ ์ฝ๋๊ฐ ํ์ฑํ๋์ด์ผ ํฉ๋๊น?
@ufo911 ๋ฌผ๋ก ๊ฐฑ์ ์ ์ด์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฌ์ฉํ๋ ์ธ์ฆ์ ์์ฒญ์ผ ๋ฟ์ ๋๋ค.
@ArchangeGabriel Stange ์ TXT ๋ ์ฝ๋๋ฅผ ์ค์ ํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
#!/bin/bash
certbot certonly \
--manual \
--agree-tos \
--manual-public-ip-logging-ok \
--preferred-challenges dns-01 \
--server https://acme-v02.api.letsencrypt.org/directory \
-d domain.tld \
-d "*.domain.tld"
์ด๊ฒ ์ ์์ธ๊ฐ์? ์๋ก์ด ํ ํฐ์ด ์์ฑ๋๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๋ช ํํ์ง ์์ ๊ฒฝ์ฐ ์ฃ์กํฉ๋๋ค. ์, ๊ฐ ์์ฒญ์ ๋ํด ์ TXT ๋ ์ฝ๋๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์ฑ๋ฆฐ์ง-์๋ต ๊ฒ์ฆ์ด๊ธฐ ๋๋ฌธ์ ์ฑ๋ฆฐ์ง๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ๋์ ์๊ฐ์ด ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ์ค์ ๋ก ์ธ์ฆ์๋ฅผ ๋ฐ๋ ์ฆ์ TXT ๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ ์ ์์ง๋ง ๊ฐฑ์ ํ ๋๋ง๋ค ๊ฒ์(์ฑ๊ณตํ๋ฉด ์ ๊ฑฐ)ํ ์ TXT ๋ ์ฝ๋๊ฐ ์์ต๋๋ค.
@ArchangeGabriel ํ , ๊ทธ๊ฒ์ด ๋๋ฅผ ์ํ ์ต์ ์ด๋ผ๊ณ ์๊ฐํ์ง ๋ง์ญ์์ค. ์ TXT ๋ ์ฝ๋๋ฅผ ๋ง๋๋ ๋ฐ 24์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋ฉฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ง์ ๋ค์ดํ์์ด ๋ฐ์ํฉ๋๋ค.
๋์ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค. :)
๋ฌผ๋ก DNS ์ฑ๋ฆฐ์ง๊ฐ ๊ฐ์ฅ ์ฌ์ด ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฌ๋ ์์ผ๋ ์นด๋์ ๊ฒฝ์ฐ ์ ์ด๋ ํ์ฌ๋ก์๋ ๋ค๋ฅธ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์์ผ๋์นด๋ ๊ณต๊ฐ์ ์๋ ์์์ ํ์ ๋๋ฉ์ธ ์ด๋ฆ์ผ๋ก ์ฑ๋ฆฐ์ง๋ฅผ ๋ณด๋ด๋ ๊ฒ์ผ๋ก ๋์ฒด๋ ์ ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค(์: *.domain.com
๋ฅผ ์์ฒญํ๋ฉด somerandomstring.domain.com
์์ ์ฑ๋ฆฐ์ง ์๋ต์ ์ฝ์ผ๋ ค๊ณ ์๋ํ ๊ฒ์
๋๋ค). *.domain.com
๊ณต๊ฐ์ ์ค์ ๋ก ์ ์ดํ ์ ์๋์ง ํ์ธํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ผ๋ก DNS์์ ์์ผ๋์นด๋ ๋ฆฌ๋๋ ์
์ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
@ArchangeGabriel ์ด๊ฒ์ ์ข์ ์ต์ ์ด์ง๋ง ์ด ๊ฒฝ์ฐ์๋ DNS ํ์ธ์ด ํ์ํฉ๋๊น? ์์ ํ ์์ผ๋์นด๋ ์ค์ ์ ํ์ํ ๊ฒ์ ์ ๊ณตํฉ๋๊น?
์๋์, ์ ์๊ฐ์ DNS ์ฑ๋ฆฐ์ง์ ๋ํ ๋์์ ์ ๊ณตํ๋ ๊ฒ์ ๋๋ค.
์์ผ๋์นด๋ ์ค์ ์ ๊ฒฝ์ฐ ๋ชจ๋ ํ์ ๋๋ฉ์ธ์ ๋ํ ์ ์ด๋ฅผ ์ฆ๋ช ํด์ผ ํฉ๋๋ค. ์ด๋ฅผ ์ํํ๋ ์ ์ผํ ํ์คํ ๋ฐฉ๋ฒ์ ํด๋น DNS ์์ญ์ ๊ธฐ์ ์ ์์ ๊ถ์ ์ฆ๋ช ํ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ค๋ฅธ ๋์ ์ ํ๊ณผ ์ ์ฌํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค. ์์์ ํ์ ๋๋ฉ์ธ์ ์์ฒญํ๋ฉด ์์ผ๋์นด๋ ๋ฆฌ๋๋ ์ ์ ์ ์ดํ ์ ์์์ ์ฆ๋ช ํ ์ ์์ต๋๋ค. IETF์ ์ถฉ๋ถํ์ง ์ฌ๋ถ๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ๊ทธ๋ค์ ๊ทธ๊ฒ์ ๋ํด ์๊ฐํ๊ณ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด ์ด ๊ฒฝ์ฐ๊ฐ ๊ฐ๋ฅํ์ง ๊ถ๊ธํฉ๋๋ค.
โ somespecificsub.domain.com์ ์ฃผ์ด์ง IP๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
โ *.domain.com ๋ฐ domain.com์ ๋ค๋ฅธ IP๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.
์ด ๊ฒฝ์ฐ somespecificsub.domain.com์ ์ ์ธํ ๊ธฐ๋ณธ ๋๋ฉ์ธ๊ณผ ๋ชจ๋ ํ์ ๋๋ฉ์ธ์ ๋ํ ์์ฒญ์ ์๋ตํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ *.domain.com ์ธ์ฆ์๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์ณ์ง ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฅํ๋ค๋ฉด ์ถ๊ฐ ์ค์ ์ด ํ์ํฉ๋๋ค. ์์ผ๋์นด๋ ์ฑ๋ฆฐ์ง ์๋ต์ ๋ํด ์์์ ํ์ ๋๋ฉ์ธ ํ์ธ์ ์ํํ ๊ถํ์ด ์์์ ์๋ฆฌ๋ ์๊ตฌ TXT ๋ ์ฝ๋์ ๊ฐ์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ๋ฉด DNS ๊ตฌ์ฑ์ด ์คํ๋๊ณ ์์ด๋ฒ๋ฆฌ๋ฏ๋ก ์์ผ๋์นด๋์ ์ ํจ์ฑ์ ๋ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
์ด์จ๋ , ๋๋ ์ด๊ฒ์ด ๋๊ตฌ์ ๋ ผ์๋์ด์ผ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ด ์ด ์ค์ ์ ์ด๋ ์์ ์์ ๊ณ ๋ คํ๋์ง, ๊ทธ๋ฆฌ๊ณ ์์ผ๋์นด๋๋ฅผ ์์ ํ๊ฒ ์ ๋ฌํ๊ธฐ ์ํด ํ์ํ ์ ํํ ๊ธฐ์ค์ด ๋ฌด์์ธ์ง ๋ชจ๋ฆ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์ํด RFC๋ฅผ ์ฝ์ด์ผ ํ๋ค๊ณ ์๊ฐํ์ง๋ง ๋๋ ์ด๊ฒ์ ํ ์๊ฐ์ด ์๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์, ์์ค์์ certbot์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
TXT ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ณ Enter ํค๋ฅผ ๋๋ฆ ๋๋ค. ๋ ํ๋์ ๊ธฐ๋ก์ ์ป๊ฒ ๋ฉ๋๋ค. ๊ทธ๊ฒ๋ ์ถ๊ฐํ์ธ์.
๊ทธ๋ฐ ๋ค์ ๋ ์ฝ๋๊ฐ ๋ฐฐํฌ๋์๋์ง ๋ ๋ฒ์งธ ํฐ๋ฏธ๋ ์ฐฝ์์ ํ์ธํฉ๋๋ค.
๊ด์ฐฎ์ผ๋ฉด ๋์๊ฐ์ Enter ํค๋ฅผ ๋๋ฆ ๋๋ค.
์ ๋ฐ์ดํธ: ์ธ์ฆ์ ์ค์น, ์ค์ ๋ฐ ๊ฐฑ์ ๋จ๊ณ๊ฐ ํฌํจ ๋ Gist์ ์ ์ฒด