์๋
,
1์์ ์์ผ๋์นด๋ ๋ฐ๊ธ์ ์
๋ฐ์ดํธํ๋ ๋ฐ ์ผ๋ง๋ ๊ฑธ๋ฆด์ง ๊ถ๊ธํ์ญ๋๊น? ๋น์ ์ ๊ทธ๊ฒ์ด ํฐ ๋ณํ๋ผ๊ณ ์๊ฐํฉ๋๊น?
๋๋ repo ๊ด๋ฆฌ์๊ฐ ์๋์ง๋ง ์ถ๊ฐํ๊ธฐ ์ฌ์ด ๊ฒ์ด ์๋๋ผ๊ณ ๋งํด์ผ ํฉ๋๋ค. LE ์์ผ๋์นด๋ ์ธ์ฆ์์๋ DNS ๊ฒ์ฆ์ด ํ์ํ๋ฉฐ ํ์ฌ lua-resty-auto-ssl์ http ๊ฒ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
DNS ์ ํจ์ฑ ๊ฒ์ฌ๋ ์์ผ๋ ์นด๋๋ฅผ ๊ณ ๋ คํ์ง ์๋๋ผ๋ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค. ๋ช ๊ฐ์ง ์๊ฐ:
deploy_challenge
ํํฌ๋ TXT ๋ ์ฝ๋์ ๊ธฐ๋กํ ๋๋ฉ์ธ๊ณผ ํ ํฐ์ ์ ๊ณตํฉ๋๋ค.
-- Define a function to store the validation tokens for DNS verification
-- by let's encrypt in your DNS setup.
auto_ssl:set("deploy_dns_challenge", function(domain, token)
-- talk to your DNS-API to create a new TXT record _acme-challenge.$domain with value $token
end)
parentdomain.com:wildcard:latest
๋ก ์ ์ฅํ๊ณ ๊ตฌ์ฒด์ ์ธ ์ธ์ฆ์๋ฅผ ์ฐพ์ ์ ์๋ ๊ฒฝ์ฐ ์คํ ๋ฆฌ์ง ๊ณ์ธต์์ ํด๋น ํค๋ฅผ ํ์ธํ๋๋ก ํ๋ ๊ฒ์
๋๋ค.์ง๋ฌธ:
is_wildcard_domain
? ๊ธฐ์กด allow_domain
์ ๋ํ ์ ๋ฐํ ๊ฐ ?์ฐธ๊ณ ๋ก ์ด์ ACMEv2 ์คํ ์ด์ง ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. :)
ํ์ฌ ACMEv2 ๋๋ํํธ์ dns-01 ์ฑ๋ฆฐ์ง๋ ๋์ ๋์ผํ๊ฑฐ๋ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
๋ง์ต๋๋ค :-) V1 API์ V2 API ๊ฐ์ DNS-01 ์ฑ๋ฆฐ์ง์์ ๋ณ๊ฒฝ๋ ์ฌํญ์ ์์ต๋๋ค.
์ฐธ๊ณ : ์ต์ํ dehydrated์ ๊ฐ๋ฐ ๋ฒ์ ์ ์ด์ ACMEv2์ ์์ผ๋์นด๋ ์ธ์ฆ์๋ฅผ ์ง์ํฉ๋๋ค. ์ด ์์ ์ ์์ํ๋ ค๋ ์ฌ๋์ด ์๋ค๋ฉด ์ง๊ธ์ด ๊ธฐํ์ ๋๋ค ;)
DNS ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ๋ resty-auto-ssl์ ์์ ํ ๋ฒ์๋ฅผ ๋ฒ์ด๋ฌ์ต๋๋ค.
๊ทธ๋ฌ๋ resty-auto-ssl์ "๋์ญ ์ธ"๋ก ๊ตฌ์ฑ๋ ์์ผ๋์นด๋ ์ธ์ฆ์๋ก ํด๋ฐฑํ ์ ์์ด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋๋ฉ์ธ์ ๋ํ ์์ผ๋์นด๋ ์ธ์ฆ์๋ฅผ ์ํํ๊ธฐ ์ํด bind9 ๋ฐ certbot์ ์ฌ์ฉํ์ฌ ์๋น์ค๋ฅผ ์ค์ ํ๋ ค๊ณ ํฉ๋๋ค. ์ง๊ธ ๋น์ฅ์ resty-auto-ssl์๊ฒ ์์ผ๋์นด๋ ์ธ์ฆ์๋ฅผ ์์ฑํ๋ ๋์ ์ฌ์ฉํ๋๋ก ์ง์ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํธ์ง: ๊ธ์, ๊ทธ๊ฒ์ ๋ฒ์ ๋ฐ ์ด ์๋๋๋ค. ์ฌ์ฉ์ ์ง์ DNS API์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ์๋ ์คํฌ๋ฆฝํธ๋ก ํ์๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค๋ ๊ฒ์ ๋ชฐ๋์ต๋๋ค...
resty-auto-ssl์ด ์ฌ์ฉํ ์ ์๋๋ก ์๋์ผ๋ก ์์ฑ๋ ์์ผ๋์นด๋ LE ์ธ์ฆ์๋ฅผ Redis์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
์ฝ๋์์ ๋ด๊ฐ ์ดํดํ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ์ด๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ sub.domain.tld
์ ๋ํด ์คํ ๋ฆฌ์ง ์ธํฐํ์ด์ค์์ ๋ค์ ๊ฒ์ฌ๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์์ต๋๋ค.
sub.domain.tld:latest
โ ํ์ฌ*.domain.tld:latest
*.sub.domain.tld:latest
์ด๋ฐ ์์ผ๋ก ์ง๊ธ์ ์ด์ ์ ์์ฑ๋ ์ธ์ฆ์๋ง ์ง์ํ๋ ์์ผ๋์นด๋๋ฅผ ํฅํ ์ฒซ ๊ฑธ์์ ๋ด๋๋ ์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ ํ, ์ฐ๋ฆฌ๊ฐ ์ํ ๊ฒฝ์ฐ ์์ผ๋์นด๋ ์ธ์ฆ์ ์์ฑ์ ์ง์ํ๋ ์ข์ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
ํธ์ง : ์์ ๊ตฌํ์ ๊ธ์ด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
@akalipetis ์ค์ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ค๊ณ ํ์ต๋๊น?
ssl_options.fullchain_der
ssl_options.privkey_der
allow_domain์์ ์๋ํฉ๋๊น?
๊ฐ๋ฅํ๋ค๋ฉด allow_domain์์ redis ์์ฒญ์ ์ํํ๊ณ ์ค์ ํ ์ ์์ต๋๋ค.
๋ฐฉ๊ธ ์ด ๋ฌธ์ ์ ๋ถ๋ชํ ๊ธฐ๋ก์ ์ํด lua-resty-auto-ssl
๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ํฐ๋ง ์๋น์ค์์ ์ฌ์ฉ์ ์ ์ ๋๋ฉ์ธ ์ํ ํ์ด์ง์ ๋ํ ์ธ์ฆ์๋ฅผ ์์ฑํ๊ณ ๋๋ถ๋ถ์ ์ฌ๋๋ค์ xxxx.status.updown.io
์ ๊ฐ์ ์์ฒด ๋๋ฉ์ธ์ ์ฌ์ฉํ์ฌ ํจ์ฌ ๋ ํจ์จ์ ์
๋๋ค. ์์ผ๋ ์นด๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
*status.updown.io
์ ๋ํ ์ธ์ฆ์ ์์ฑ์ ๊ฑด๋๋ฐ๊ธฐ ์ํด allow_domain
๋๋ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ฒ์ ๋ฌ์ฑํ์ต๋๋ค.
auto_ssl:set("allow_domain", function(domain)
return not ngx.re.match(domain, "status.updown.io$", "ijo")
end)
๊ทธ๋ฐ ๋ค์ ์์ผ๋์นด๋๋ฅผ ๊ธฐ๋ณธ ๋์ฒด ์ธ์ฆ์๋ก ์ ๊ณตํ์ต๋๋ค.
ssl_certificate /etc/letsencrypt/live/status.updown.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/status.updown.io/privkey.pem;
๋ค์๊ณผ ๊ฐ์ DNS ์ฑ๋ฆฐ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ธ์ฆ์๋ฅผ ์์ฑํ์ต๋๋ค.
sudo certbot certonly --manual -d *.status.updown.io --agree-tos --no-bootstrap --manual-public-ip-logging-ok
DNS ์ฑ๋ฆฐ์ง๋ก ๋ณต์กํด ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์๋ํํ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ ๊ฐ์น๊ฐ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ฎ์ ๊ธฐ์ ์ด์ง๋ง ์์๋๋ก ์๋ํฉ๋๋ค. :)
์ด๋ ์ข์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด๋ฉฐ ๋ง์ ์ฌ์ฉ ์ฌ๋ก์ ์ ์ฉ๋๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์
๋๋ค.
๊ทธ๋ฌ๋ https://github.com/AnalogJ/lexicon ์ ์ฌ์ฉํ๋ฉด DNS ์ฑ๋ฆฐ์ง๊ฐ ๋งค์ฐ ์ฌ์์ก์ต๋๋ค!
๊ทธ๊ฒ์ ์ ์๋ํ๊ณ ๋ง์ ๊ณต๊ธ์๋ฅผ ์ง์ํฉ๋๋ค. ๋๋ ๊ทธ๋ค ์ค ํ๋๋ฅผ ์ถ๊ฐํ๊ณ ๊ทธ ๊ณผ์ ์ ์์ฒญ๋๊ฒ ์ฝ์ต๋๋ค.
@kapouer lexicon
์ ๋ํ ํ์ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ์๋ํํ๋ ค๋ ๊ฒฝ์ฐ ์ผ๋์ ๋๊ฒ ์ต๋๋ค ;)
๋ฐฉ๊ธ ์ด ๋ฌธ์ ์ ๋ถ๋ชํ ๊ธฐ๋ก์ ์ํด
lua-resty-auto-ssl
๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ํฐ๋ง ์๋น์ค์์ ์ฌ์ฉ์ ์ ์ ๋๋ฉ์ธ ์ํ ํ์ด์ง์ ๋ํ ์ธ์ฆ์๋ฅผ ์์ฑํ๊ณ ๋๋ถ๋ถ์ ์ฌ๋๋ค์xxxx.status.updown.io
์ ๊ฐ์ ์์ฒด ๋๋ฉ์ธ์ ์ฌ์ฉํ์ฌ ํจ์ฌ ๋ ํจ์จ์ ์ ๋๋ค. ์์ผ๋ ์นด๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
*status.updown.io
์ ๋ํ ์ธ์ฆ์ ์์ฑ์ ๊ฑด๋๋ฐ๊ธฐ ์ํดallow_domain
๋๋ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ฒ์ ๋ฌ์ฑํ์ต๋๋ค.auto_ssl:set("allow_domain", function(domain) return not ngx.re.match(domain, "status.updown.io$", "ijo") end)
๊ทธ๋ฐ ๋ค์ ์์ผ๋์นด๋๋ฅผ ๊ธฐ๋ณธ ๋์ฒด ์ธ์ฆ์๋ก ์ ๊ณตํ์ต๋๋ค.
ssl_certificate /etc/letsencrypt/live/status.updown.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/status.updown.io/privkey.pem;
๋ค์๊ณผ ๊ฐ์ DNS ์ฑ๋ฆฐ์ง๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ์ธ์ฆ์๋ฅผ ์์ฑํ์ต๋๋ค.
sudo certbot certonly --manual -d *.status.updown.io --agree-tos --no-bootstrap --manual-public-ip-logging-ok
DNS ์ฑ๋ฆฐ์ง๋ก ๋ณต์กํด ๋ณด์ด๊ธฐ ๋๋ฌธ์ ์๋ํํ๋ ๋ฐ ์๊ฐ์ ํ ์ ํ ๊ฐ์น๊ฐ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ฎ์ ๊ธฐ์ ์ด์ง๋ง ์์๋๋ก ์๋ํฉ๋๋ค. :)
๋๋ ๋ํ ์ฐ๋ฆฌ ์ฑ์ ๋ํด ๋์ผํ ์ ํ์ ๋๋ฉ์ธ ๊ฒ์ฌ๋ฅผ ์ํํ๊ณ ์์ต๋๋ค. ์ฌ์ฉ์์ ํฌํธ ํธ์คํธ์ "์์ฒด" ๋๋ฉ์ธ ์ค ํ๋๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ์ ์ CA์์ ์์ผ๋์นด๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋๋์๊ฐ๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ฌ์ ํ LE๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ผ๋ก ์์ผ๋์นด๋๋ฅผ ์์ฑํ๋ค๋ ๋น์ ์ ์์ด๋์ด๋ฅผ ์ข์ํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ํํด ๋ณผ ๊ฒ์ด๋ค.
์
๋ฐ์ดํธ
์ข์, ์ด๊ฒ์ ๋ด๊ฐ ์ํ๋ ๊ฒ์ ์ค์ ๋ก ์ํํ๋ ์๋ฃจ์
์
๋๋ค. ํด๋ผ์ฐ๋ํ๋ ์ด ํ๋ฌ๊ทธ์ธ. ๋ฌธ์๋ ๊ฝค ์ข์ต๋๋ค. 1~2์๊ฐ ์์ ์์
์ ์๋ฃํ์ต๋๋ค.
@jarthod ์ด๊ฒ์ ์๋ํํ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? 3๊ฐ์๋ง๋ค ์์ผ๋์นด๋๋ฅผ ๊ฐฑ์ ํ๋ ๊ฒ์ ๊ธฐ์ตํ๋ ๊ฒ์ ์ค์ ๋ก ๊ณ ํต์ค๋ฝ์ต๋๋ค.
@jarthod ์ด๊ฒ์ ์๋ํํ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? 3๊ฐ์๋ง๋ค ์์ผ๋์นด๋๋ฅผ ๊ฐฑ์ ํ๋ ๊ฒ์ ๊ธฐ์ตํ๋ ๊ฒ์ ์ค์ ๋ก ๊ณ ํต์ค๋ฝ์ต๋๋ค.
๋ด ํธ์ด ์๋๋ผ ๋๋ ์ฌ์ ํ ์ด๊ฒ์ ์ฌ์ฉํ๊ณ 3 ๊ฐ์๋ง๋ค ์๋ ๊ฐฑ์ ์ํ๊ณ ์์ต๋๋ค. ๋ด ์๋น์ค(updown.io)๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ธ์ฆ์๊ฐ ๋ง๋ฃ๋๋ ค๊ณ ํ ๋ ์๋ ค์ฃผ๋ฏ๋ก ๊ธฐ์ตํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
๋๋ ๋ํ ๋น์ ์ ์๋น์ค์ ์ฌ์ฉ์์ ๋๋ค. ์ด์จ๋ ๋๋ ๊ณ์ํด์ ์ ํต์ ์ธ 1๋ ์์ผ๋ ์นด๋ SSL์ ์ป์์ต๋๋ค.
์ด์ ๋น์ ์ ์๋น์ค๋ ๋ด๋ ์ ์๊ธฐ์์ผ์ค ์ผ์ด ์๊ฒผ์ต๋๋ค ๐
2020๋ 10์ 3์ผ ์คํ 10์ 30๋ถ์ Adrien Rey-Jarthon [email protected] ์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
</s></s> ์์๋
@jarthod ์ด๊ฒ์ ์๋ํํ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? 3๊ฐ์๋ง๋ค ์์ผ๋์นด๋๋ฅผ ๊ฐฑ์ ํ๋ ๊ฒ์ ๊ธฐ์ตํ๋ ๊ฒ์ ์ค์ ๋ก ๊ณ ํต์ค๋ฝ์ต๋๋ค.๋ด ํธ์ด ์๋๋ผ ๋๋ ์ฌ์ ํ ์ด๊ฒ์ ์ฌ์ฉํ๊ณ 3 ๊ฐ์๋ง๋ค ์๋ ๊ฐฑ์ ์ํ๊ณ ์์ต๋๋ค. ๋ด ์๋น์ค(updown.io)๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ ๋ชจ๋ํฐ๋งํ๊ณ ์ธ์ฆ์๊ฐ ๋ง๋ฃ๋๋ ค๊ณ ํ ๋ ์๋ ค์ฃผ๋ฏ๋ก ๊ธฐ์ตํ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ๋ณด๊ฑฐ๋ ๊ตฌ๋ ์ ์ทจ์ํ์ธ์.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ฝ๋์์ ๋ด๊ฐ ์ดํดํ ๋ฐ์ ๋ฐ๋ฅด๋ฉด ์ด๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ฐ
sub.domain.tld
์ ๋ํด ์คํ ๋ฆฌ์ง ์ธํฐํ์ด์ค์์ ๋ค์ ๊ฒ์ฌ๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ ์ ์์ต๋๋ค.sub.domain.tld:latest
โ ํ์ฌ*.domain.tld:latest
*.sub.domain.tld:latest
์ด๋ฐ ์์ผ๋ก ์ง๊ธ์ ์ด์ ์ ์์ฑ๋ ์ธ์ฆ์๋ง ์ง์ํ๋ ์์ผ๋์นด๋๋ฅผ ํฅํ ์ฒซ ๊ฑธ์์ ๋ด๋๋ ์ต๋๋ค. ๊ทธ๋ ๊ฒ ํ ํ, ์ฐ๋ฆฌ๊ฐ ์ํ ๊ฒฝ์ฐ ์์ผ๋์นด๋ ์ธ์ฆ์ ์์ฑ์ ์ง์ํ๋ ์ข์ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
ํธ์ง : ์์ ๊ตฌํ์ ๊ธ์ด ๋๋ฆฌ๊ฒ ์ต๋๋ค.