Lorawan-stack: ๋™์ผํ•œ ์‹œ์Šคํ…œ์˜ apache + ttn ์Šคํƒ + letsencrypt acme ์ธ์ฆ์„œ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 12์›” 19์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: TheThingsNetwork/lorawan-stack

๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ์ œ์ถœํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ํ…œํ”Œ๋ฆฟ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฉด ์ด ๋ฒ„๊ทธ ๋ณด๊ณ ์„œ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์š”์•ฝ

ttn ๋จธ์‹ ์—์„œ ์•„ํŒŒ์น˜๊ฐ€ ์„ค์น˜๋˜๊ณ  ํ™œ์„ฑํ™”๋  ๋•Œ(80/443 ์ˆ˜์‹ ) ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
TTN ์ฝ˜์†”์€ 80/443 ํฌํŠธ์—์„œ ์ฐจ๋‹จ๋˜๊ณ  1885,8885 ํฌํŠธ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ฒฝ์šฐ ์ธ์ฆ์„œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€๊ฐ€ TTN ์Šคํƒ๊ณผ ์ผ๋ถ€ DB/์›น ์•ฑ์„ ๋™์ผํ•œ ์žฅ์น˜์— ๋ฐฐ์น˜ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ์ƒํ™ฉ์ž…๋‹ˆ๋‹ค.

https://github.com/TheThingsNetwork/lorawan-stack/issues/1731

TTN์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค: ๋ˆ„๋ฝ๋œ ์ธ์ฆ์„œ/๋˜๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ์— ์—†์Šต๋‹ˆ๋‹ค.

๋ฒˆ์‹ ๋‹จ๊ณ„

๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์žฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

1) Apache๊ฐ€ ํ™œ์„ฑ ์ƒํƒœ์ผ ๋•Œ(80, 443์—์„œ ์ˆ˜์‹ ) ํฌํŠธ ๊ตฌ์„ฑ - ttn ์Šคํƒ์€ 80, 443 ํฌํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(80,443์€ # docker-compose.yml์—์„œ #์ด์–ด์•ผ ํ•จ - ํฌํŠธ 1885, 8885๊ฐ€ ์‚ฌ์šฉ๋จ) . ์ด๊ฒƒ์—์„œ (docker-compose๋Š” letsencrypt ์ธ์ฆ์„œ๋ฅผ ์–ป์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค).

docker-compose.yml ํŒŒ์ผ:

   ports:
(hashed)      - '80:1885'
(hashed)     - '443:8885'
      - '1882:1882'
      - '8882:8882'
      - '1883:1883'
      - '8883:8883'
      - '1884:1884'
      - '8884:8884'
      - '1885:1885'
      - '8885:8885'
      - '8886:8886'
      - '1887:1887'
      - '8887:8887'
      - '1700:1700/udp'
    env_file: '.env'

.env ํŒŒ์ผ์ด ํฌํŠธ๋ฅผ 443 ๋Œ€์‹  8885๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

TTN_LW_IS_EMAIL_NETWORK_CONSOLE_URL=https://subdomain.example.com:8885/console
TTN_LW_IS_EMAIL_NETWORK_IDENTITY_SERVER_URL=https://subdomain.example.com:8885/oauth

TTN_LW_IS_OAUTH_UI_CANONICAL_URL=https://subdomain.example.com:8885/oauth
TTN_LW_IS_OAUTH_UI_IS_BASE_URL=https://subdomain.example.com:8885/api/v3

TTN_LW_CONSOLE_OAUTH_AUTHORIZE_URL=https://subdomain.example.com:8885/oauth/authorize
TTN_LW_CONSOLE_OAUTH_TOKEN_URL=https://subdomain.example.com:8885/oauth/token

TTN_LW_CONSOLE_UI_CANONICAL_URL=https://subdomain.example.com:8885/console
TTN_LW_CONSOLE_UI_AS_BASE_URL=https://subdomain.example.com:8885/api/v3
TTN_LW_CONSOLE_UI_GS_BASE_URL=https://subdomain.example.com:8885/api/v3
TTN_LW_CONSOLE_UI_IS_BASE_URL=https://subdomain.example.com:8885/api/v3
TTN_LW_CONSOLE_UI_JS_BASE_URL=https://subdomain.example.com:8885/api/v3
TTN_LW_CONSOLE_UI_NS_BASE_URL=https://subdomain.example.com:8885/api/v3
TTN_LW_CONSOLE_UI_EDTC_BASE_URL=https://subdomain.example.com:8885/api/v3
TTN_LW_CONSOLE_UI_QRG_BASE_URL=https://subdomain.example.com:8885/api/v3

2) ์šฐ๋ฆฌ๊ฐ€:
์•„ํŒŒ์น˜ ์ค‘์ง€ (์„œ๋น„์Šค apache2 ์ค‘์ง€)
ํ™œ์„ฑํ™”ํ•˜๋„๋ก ttn-stack์„ ์žฌ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค(80, 443 ํฌํŠธ - ์ œ๊ฑฐ(ํ•ด์‹œ))
์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ํ•˜์œ„ ๋„๋ฉ”์ธ์— ์—ฐ๊ฒฐํ•˜๋ฉด ์ธ์ฆ์„œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค(80/443 ํฌํŠธ์—์„œ).

docker-compose.yml ํŒŒ์ผ:

  ports:
      - '80:1885'
      - '443:8885'
      - '1882:1882'
      - '8882:8882'
      - '1883:1883'
      - '8883:8883'
      - '1884:1884'
      - '8884:8884'
(hashed)      - '1885:1885'
(hashed)     - '8885:8885'
      - '8886:8886'
      - '1887:1887'
      - '8887:8887'
      - '1700:1700/udp'
    env_file: '.env'

.env ํŒŒ์ผ ํ‘œ์ค€ ํฌํŠธ 443 ์‚ฌ์šฉ - ์ด ๊ฒฝ์šฐ ttn์€ letsencrypt ์ธ์ฆ์„œ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.

TTN_LW_IS_EMAIL_NETWORK_CONSOLE_URL=https://subdomain.example.com/console
TTN_LW_IS_EMAIL_NETWORK_IDENTITY_SERVER_URL=https://subdomain.example.com/oauth


TTN_LW_IS_OAUTH_UI_CANONICAL_URL=https://subdomain.example.com/oauth
TTN_LW_IS_OAUTH_UI_IS_BASE_URL=https://subdomain.example.com/api/v3

TTN_LW_CONSOLE_OAUTH_AUTHORIZE_URL=https://subdomain.example.com/oauth/authorize
TTN_LW_CONSOLE_OAUTH_TOKEN_URL=https://subdomain.example.com/oauth/token

TTN_LW_CONSOLE_UI_CANONICAL_URL=https://subdomain.example.com/console
TTN_LW_CONSOLE_UI_AS_BASE_URL=https://subdomain.example.com/api/v3
TTN_LW_CONSOLE_UI_GS_BASE_URL=https://subdomain.example.com/api/v3
TTN_LW_CONSOLE_UI_IS_BASE_URL=https://subdomain.example.com/api/v3
TTN_LW_CONSOLE_UI_JS_BASE_URL=https://subdomain.example.com/api/v3
TTN_LW_CONSOLE_UI_NS_BASE_URL=https://subdomain.example.com/api/v3
TTN_LW_CONSOLE_UI_EDTC_BASE_URL=https://subdomain.example.com/api/v3
TTN_LW_CONSOLE_UI_QRG_BASE_URL=https://subdomain.example.com/api/v3

3) ์ด์ œ ์ธ์ฆ์„œ๋ฅผ ์—…๋ฐ์ดํŠธํ•œ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๊ตฌ์„ฑ(์•„ํŒŒ์น˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํฌํŠธ 80/443, ์ฝ˜์†”์— 1885/8885 ์‚ฌ์šฉ)์œผ๋กœ ๋‹ค์‹œ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  https://subdomain.domain.com ์—์„œ ์„ฑ๊ณต์ ์œผ๋กœ ์—ด๋ฆฐ ์ฝ˜์†”:8885 /.

์ง€๊ธˆ ๋ฌด์—‡์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ„ฐ๋ฏธ๋„ ์ถœ๋ ฅ์„ ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜ ๋กœ๊ทธ๋ฅผ ์—…๋กœ๋“œํ•˜๊ฑฐ๋‚˜(.txt๋กœ) ์Šคํฌ๋ฆฐ์ƒท์„ ์—…๋กœ๋“œํ•˜์„ธ์š”.

...

๋Œ€์‹  ๋ฌด์—‡์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๊นŒ?

ํ•ด๋‹น๋˜๋Š” ๊ฒฝ์šฐ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ ๋˜๋Š” ๋ชจํ˜•์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

...

ํ™˜๊ฒฝ

๊ท€ํ•˜์˜ ํ™˜๊ฒฝ: OS/๋ธŒ๋ผ์šฐ์ €/๊ฒŒ์ดํŠธ์›จ์ด/๋””๋ฐ”์ด์Šค/...? ๋ฒ„์ „? ID/EUI? ํ•ด๋‹น๋˜๋Š” ๊ฒฝ์šฐ "ttn-lw-cli version" ๋˜๋Š” "ttn-lw-stack version"์˜ ์ถœ๋ ฅ์„ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.

...

์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ป๊ฒŒ ์ œ์•ˆํ•ฉ๋‹ˆ๊นŒ?

๋™์ผํ•œ ์‹œ์Šคํ…œ์—์„œ ttn๊ณผ apache๋ฅผ ๋ชจ๋‘ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?๋˜๋Š” ๊ฐ•์ œ๋กœ ์•”ํ˜ธํ™”ํ•˜์—ฌ ๋‹ค๋ฅธ ํฌํŠธ์—์„œ ์ธ์ฆ์„ ๋ฐ›๋„๋ก ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์ด ์ž‘์—…์„ ์ง์ ‘ ์ˆ˜ํ–‰ํ•˜๊ณ  Pull Request๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ „๋ฌธ๊ฐ€๋ฅผ @๋ฉ˜์…˜ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

...

documentation

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๋’ค์—์„œ The Things Stack์„ ์‹คํ–‰ํ•  ๋•Œ ๊ตฌ์„ฑ์—์„œ TLS๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ํ”„๋ก์‹œ๊ฐ€ ๋ชจ๋“  TLS ์—ฐ๊ฒฐ(HTTP๋ฟ๋งŒ ์•„๋‹ˆ๋ผ gRPC, MQTT ๋“ฑ)์„ ์ข…๋ฃŒํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Things Stack์˜ ๋ชจ๋“  TLS ์ˆ˜์‹ ๊ธฐ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์—ญ ํ”„๋ก์‹œ์—์„œ ๋งคํ•‘ํ•ด์•ผ ํ•˜๋Š” ํฌํŠธ๋ฅผ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•  ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋“ค์˜ ํ”„๋ก์‹œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ apache/nginx/haproxy/envoy/etc๋กœ ์ด๊ฒƒ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฌธ์„œํ™”ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

์—ญ๋ฐฉํ–ฅ ํ”„๋ก์‹œ ๋’ค์—์„œ The Things Stack์„ ์‹คํ–‰ํ•  ๋•Œ ๊ตฌ์„ฑ์—์„œ TLS๋ฅผ ์™„์ „ํžˆ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ํ”„๋ก์‹œ๊ฐ€ ๋ชจ๋“  TLS ์—ฐ๊ฒฐ(HTTP๋ฟ๋งŒ ์•„๋‹ˆ๋ผ gRPC, MQTT ๋“ฑ)์„ ์ข…๋ฃŒํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Things Stack์˜ ๋ชจ๋“  TLS ์ˆ˜์‹ ๊ธฐ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์—ญ ํ”„๋ก์‹œ์—์„œ ๋งคํ•‘ํ•ด์•ผ ํ•˜๋Š” ํฌํŠธ๋ฅผ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•  ์‚ฌ๋žŒ๋“ค์ด ๊ทธ๋“ค์˜ ํ”„๋ก์‹œ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋‹ค๊ณ  ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ apache/nginx/haproxy/envoy/etc๋กœ ์ด๊ฒƒ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฌธ์„œํ™”ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @htdvisser๋‹˜ , ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๊ณต์šฉ/๊ณ ์ • IP ์ฃผ์†Œ(LTE ๊ธฐ๋ฐ˜)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ์ปดํ“จํ„ฐ์—์„œ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ธํ„ฐ๋„ท ์ธก์—์„œ ์ง์ ‘ VPS(ovh.eu)๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณต๊ธ‰์ž์— ๋”ฐ๋ฅด๋ฉด ํ”„๋ก์‹œ์™€ ๋ฐฉํ™”๋ฒฝ์ด ์—†์Šต๋‹ˆ๋‹ค(์ผ๋ถ€ DoS๋งŒ).

๋‘ ๋ณ€ํ˜• ๋ชจ๋‘ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ฐ ํด๋ผ์ด์–ธํŠธ/IP ์Šคํ…Œ์ด์…˜์— ๋Œ€ํ•œ ํ‘œ์ค€ 80/443 ํฌํŠธ์—์„œ ์ธ์ฆ์„œ ์ดˆ๊ธฐํ™”).
๋‚˜์ค‘์— ์ฝ˜์†”์„ ๋‹ค๋ฅธ ํฌํŠธ(1885/8885)๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ๊ตฌ์กฐ์— ๊ด€๊ณ„์—†์ด VPS ๋˜๋Š” ๋ชจ๋“  ๊ณต์šฉ/๊ณ ์ • IP ์žฅ์น˜์™€ ๊ด€๋ จํ•˜์—ฌ ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž ์‹œ "์ฝ˜์†” ๋กœ๊ทธ ํ™”๋ฉด"์„ ๋ณด๋‹ˆ TTN ์Šคํƒ์—์„œ ๋ณด๊ณ ๋œ "ํ•ด์ปค ํ™œ๋™ ์‹œ๋„"๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค(ํ™”๋ฉด์—๋Š” ํ‘œ์ค€ http/htts ํฌํŠธ์— ๋Œ€ํ•œ ์›น ๊ณต๊ฒฉ๋งŒ ํ‘œ์‹œ๋จ). ๋„๋ฉ”์ธ/ํ•˜์œ„ ๋„๋ฉ”์ธ์—๋Š” dns ๋ ˆ์ฝ”๋“œ๋งŒ ์žˆ๊ณ  ๋กœ๋ด‡/๊ฒ€์ƒ‰ ์—”์ง„์ด ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ์›นํŽ˜์ด์ง€์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ•ด์ปค ๋กœ๋ด‡์ด ์‘๋‹ต ์žฅ์น˜์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ณ ์ • IP4 ์ฃผ์†Œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์กฐ๋งŒ๊ฐ„ ์žฅ์น˜๋ฅผ ์ฐพ์•„ ํ•ด์ปค ๊ธฐ๊ณ„์— ์˜ํ•ด ๊ณต๊ฒฉํ•  ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 100% ์•ˆ์ „ํ•˜๋”๋ผ๋„ ์•Œ๋ ค์ง„ http/https ํฌํŠธ์— ๋Œ€ํ•œ ๋Œ€๊ทœ๋ชจ ๊ณต๊ฒฉ์œผ๋กœ ์„œ๋ฒ„๋ฅผ ๋ฐ”์˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”/์›น ์ธํ„ฐํŽ˜์ด์Šค์— 80/443 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์ด๋ฉฐ TTN ์Šคํƒ ์ฝ˜์†”์— ๋Œ€ํ•ด ๋ณ€๊ฒฝํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ด€๋ฆฌ ๋ชฉ์ (๊ณต๊ฐœ ์•„๋‹˜)์ด๋ฉฐ ๊ด€๋ฆฌ์ž๋Š” ์ด ์„ค์ •์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์œ ์ผํ•œ ์งˆ๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ณ„ํš A) ๋‹ค๋ฅธ ํฌํŠธ์—์„œ acme/letsencrypt ์ธ์ฆ์„œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑ/์ƒˆ๋กœ๊ณ ์นจํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
๊ณ„ํš B) ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์ตœ์†Œํ•œ ๋ช‡ ๊ฐ€์ง€ ์•Œ๋ ค์ง„ ํ˜ธ์ŠคํŠธ(์˜ˆ: ๊ณ ์ • IP)์— ๋Œ€ํ•ด ์—ฌ๊ธฐ์— ์„ค๋ช…๋œ ์œ„์˜ ์ˆ˜๋™ ์ ˆ์ฐจ๋ฅผ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ACME์˜ HTTP-01 ๋ฐ TLS-ALPN-01 ์ฑŒ๋ฆฐ์ง€ ์‚ฌ์–‘์—์„œ๋Š” ํฌํŠธ 80/443์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ์ฑŒ๋ฆฐ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ๋ฅผ ์–ป๊ฑฐ๋‚˜ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

certbot(์ด๋Š” ์„ค๋ช…์„œ ๋ฒ”์œ„ ๋ฐ–) ๋˜๋Š” ์œ ๋ฃŒ ์ธ์ฆ ๊ธฐ๊ด€(๋˜ํ•œ ์„ค๋ช…์„œ ๋ฒ”์œ„ ๋ฐ–)๊ณผ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ DNS-01 ์ฑŒ๋ฆฐ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ACME ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ "์‚ฌ์šฉ์ž ์ง€์ • ์ธ์ฆ์„œ" ์ง€์นจ์— ๋”ฐ๋ผ ์‚ฌ๋ฌผ ์Šคํƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://thethingsstack.io/v3.3.2/guides/getting-started/certificates/#custom -certificates ๋ฐ ๋‹ค์Œ ํ™˜๊ฒฝ์—์„œ :

TTN_LW_TLS_SOURCE=file
TTN_LW_TLS_CERTIFICATE=/path/to/cert-chain.pem
TTN_LW_TLS_CERTIFICATE=/path/to/key.pem

TLS ์ข…๋ฃŒ ํ”„๋ก์‹œ ๋’ค์—์„œ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Things Stack์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•ด https://github.com/TheThingsNetwork/lorawan-stack/issues/1760 ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

Things Stack์—์„œ ์™ธ๋ถ€์—์„œ ์š”์ฒญํ•œ ์ธ์ฆ์„œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฌธ์„œํ™”ํ•˜๊ธฐ ์œ„ํ•ด https://github.com/TheThingsNetwork/lorawan-stack/issues/1761 ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰