๊ทœ์น™ ํ‰๊ฐ€ ์ˆœ์„œ

๊ทœ์น™ ํ‰๊ฐ€๋Š” ์ •์ฑ…์— ์„ค์ •๋œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์›น ์š”์ฒญ์„ ํ—ˆ์šฉ ๋˜๋Š” ๊ฑฐ๋ถ€ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ ๋‹ค์Œ ์†์„ฑ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.

  • ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„: ์ •์ˆ˜ ๊ฐ’์ด ์ž‘์„์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.
  • SessionMatcher: ๋‹ค์Œ ์„ธ์…˜ ์ˆ˜์ค€ ์†์„ฑ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
    • ์†Œ์Šค ๋จธ์‹ ์˜ IP ์ฃผ์†Œ
    • ์†Œ์Šค ๋จธ์‹ ์˜ ์„œ๋น„์Šค ๊ณ„์ •
    • ์†Œ์Šค ๋จธ์‹ ์˜ ๋ณด์•ˆ ํƒœ๊ทธ
    • ๋Œ€์ƒ ๋จธ์‹ ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„
  • ApplicationMatcher: ๋‹ค์Œ HTTP ์š”์ฒญ ์†์„ฑ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
    • URL
    • ๊ฒฝ๋กœ
    • ์š”์ฒญ ํ—ค๋”

๋ชจ๋“  SessionMatcher ๋ฐ ApplicationMatcher ์†์„ฑ์˜ ๋ชฉ๋ก์€ SessionMatcher ๋ฐ ApplicationMatcher์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ทœ์น™ ํ‰๊ฐ€ ์ž‘๋™ ๋ฐฉ์‹

๊ทœ์น™์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

  1. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ทœ์น™์ด ๋จผ์ € ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  2. SessionMatcher ๋ฐ ApplicationMatcher ์†์„ฑ๊ณผ ์ผ์น˜ํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ทœ์น™์ด ํ•ด๋‹น ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ์š”์ฒญ์ด ํ•ด๋‹น ๊ทœ์น™์˜ SessionMatcher ๋ฐ ApplicationMatcher ์†์„ฑ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋‹ค์Œ ๊ทœ์น™์ด ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  4. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์š”์ฒญ๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ทœ์น™์ด ๋ฐœ๊ฒฌ๋˜๊ฑฐ๋‚˜ ๋ชจ๋“  ๊ทœ์น™์ด ํ‰๊ฐ€๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†์œผ๋ฉด ์š”์ฒญ์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

TLS ๊ฒ€์‚ฌ ๊ตฌ์„ฑ ์ „

TLS ๊ฒ€์‚ฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ๊ทœ์น™ ํ‰๊ฐ€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋Š” ํ”„๋ก์‹œ ์„œ๋ฒ„์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„, ์†Œ์Šค ID, HTTP ํ—ค๋”, ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์ฒญ์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ์š”์ฒญ์ด ํ—ˆ์šฉ๋˜๋ฉด HTTP ํŠธ๋ž˜ํ”ฝ์ด ๋Œ€์ƒ์— ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์š”์ฒญ์ด ๊ฑฐ๋ถ€๋˜๋ฉด HTTP ํŠธ๋ž˜ํ”ฝ์ด ํ†ต๊ณผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๋Š” ํ”„๋ก์‹œ์— HTTP CONNECT ์š”์ฒญ์„ ์ „์†กํ•˜์—ฌ ๋Œ€์ƒ์— TCP ํ„ฐ๋„์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž„์˜์˜ TCP ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๊ฑฐ๋‚˜ HTTPS์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ”„๋ก์‹œ๋ฅผ ํ†ตํ•ด ๋Œ€์ƒ๊ณผ ์—”๋“œ ํˆฌ ์—”๋“œ TLS ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค.

  • ๊ทœ์น™์— ์ผ์น˜ํ•˜๋Š” SessionMatcher ์†์„ฑ์ด ์žˆ๊ณ  ApplicationMatcher ์†์„ฑ์ด ์—†๋Š” ๊ฒฝ์šฐ ๊ทœ์น™ ํ‰๊ฐ€ ๊ฒฐ๊ณผ ํŠธ๋ž˜ํ”ฝ์ด ํ—ˆ์šฉ๋˜๊ณ  ๋Œ€์ƒ์— ๋Œ€ํ•œ ํ„ฐ๋„์ด ์„ค์ •๋œ ํ›„ ํŠธ๋ž˜ํ”ฝ์ด TCP ํ”„๋ก์‹œ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” HTTPS ๋ฐ TCP ํŠธ๋ž˜ํ”ฝ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋” ๋†’์€ ๊ทœ์น™์ด ์š”์ฒญ์— ๋Œ€ํ•ด ์ทจํ•  ์ž‘์—…์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๊ทœ์น™ ํ‰๊ฐ€๊ฐ€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ํ‰๊ฐ€๊ฐ€ ApplicationMatcher ์†์„ฑ์ด ์žˆ๋Š” ๊ทœ์น™์œผ๋กœ ์ง„ํ–‰๋˜๋ฉด ํ„ฐ๋„๋ง๋œ ํŠธ๋ž˜ํ”ฝ์ด HTTP ๋˜๋Š” HTTPS๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

    ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ HTTP ๋˜๋Š” HTTPS๊ฐ€ ์•„๋‹ˆ๋ฉด ์—ฐ๊ฒฐ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

    ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ HTTP์ด๋ฉด ํ˜ธ์ŠคํŠธ ์ด๋ฆ„, ์†Œ์Šค ID, HTTP ํ—ค๋”, ๊ฒฝ๋กœ๋ฅผ ํฌํ•จํ•˜์—ฌ ์š”์ฒญ์ด ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค. ํ‰๊ฐ€ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ํŠธ๋ž˜ํ”ฝ์ด ํ—ˆ์šฉ๋˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

  • HTTPS ํŠธ๋ž˜ํ”ฝ์˜ ๊ฒฝ์šฐ TLS ๊ฒ€์‚ฌ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ๊ทœ์น™์ด ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ทœ์น™์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

  • HTTPS ํŠธ๋ž˜ํ”ฝ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์šฐ์—๋งŒ ๊ทœ์น™์ด ๊ฒ€์‚ฌ๋ฉ๋‹ˆ๋‹ค.

    • TLS ๊ฒ€์‚ฌ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ํŠธ๋ž˜ํ”ฝ์ด SessionMatcher ์†์„ฑ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

TLS ๊ฒ€์‚ฌ ๊ทœ์น™ ๊ตฌ์„ฑ ๊ถŒ์žฅ์‚ฌํ•ญ

  • TCP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด TCP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ HTTP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ทœ์น™๋ณด๋‹ค ๋†’์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ApplicationMatcher ์†์„ฑ์ด ์žˆ๋Š” ๊ทœ์น™์€ ๊ด€๋ จ ์—†๋Š” ํ๋ฆ„์ด HTTP๋กœ ํ•ด์„๋˜๋Š” ๊ฒƒ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด SessionMatcher ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ์ขํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • TLS(HTTPS ํฌํ•จ) ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ TLS ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ๊ทœ์น™์€ TCP ํ”„๋ก์‹œ ๊ทœ์น™์œผ๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถˆํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ TLS ๊ฒ€์‚ฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด TLS ๊ฒ€์‚ฌ ๊ทœ์น™์ด TLS๊ฐ€ ์•„๋‹Œ ๊ฒ€์‚ฌ ๊ทœ์น™๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•ด ๋น ๋ฅด๊ฒŒ ์‹คํŒจํ•˜๋„๋ก SessionMatcher ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ TLS ๊ฒ€์‚ฌ ๊ทœ์น™ ๋ฒ”์œ„๋ฅผ ์ขํ˜€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

TLS ๊ฒ€์‚ฌ ๊ทœ์น™ ๊ตฌ์„ฑ ์˜ˆ์‹œ

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ ๋‘ ๊ทœ์น™์„ ๊ณ ๋ คํ•˜์„ธ์š”.

์˜ˆ 1

์ด ์˜ˆ์‹œ์—์„œ๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ๋‹ค๋ฅธ ๊ทœ์น™์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ทœ์น™์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • ๊ทœ์น™ 1

    description: do not allow POST requests
    priority: 10
    basicProfile: DENY
    sessionMatcher: true
    tlsInspectionEnabled: true
    applicationMatcher: request.method == 'POST'
    
  • ๊ทœ์น™ 2

    description: allow TCP proxying from tag 12345 to example.com
    priority: 20
    basicProfile: ALLOW
    sessionMatcher: source.matchTag('tagValues/12345') && host() == 'example.com'
    

์ด ์˜ˆ์—์„œ ๋ณด์•ˆ ์›น ํ”„๋ก์‹œ๋Š” ๋‘ ๊ทœ์น™์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

  • TCP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜์ง€๋งŒ ํŠน์ • ์œ ํ˜•์˜ HTTP ์š”์ฒญ์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ธ ๊ฒƒ์€ TCP ํŠธ๋ž˜ํ”ฝ์— POST ์š”์ฒญ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๊ทœ์น™ 2์˜ ํŠธ๋ž˜ํ”ฝ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. HTTP ๋ฉ”์„œ๋“œ๋ฅผ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ํƒœ๊ทธ 12345์—์„œ example.com์œผ๋กœ์˜ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑ„์„œ HTTP๋กœ ํ•ด์„๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.
  • ๊ทœ์น™ 2๋ฅผ ์ ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

    • ๊ถŒ์žฅ: ๊ทœ์น™ 2์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋” ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ๋†’์ž…๋‹ˆ๋‹ค(์šฐ์„ ์ˆœ์œ„: 5).
    • ํ—ˆ์šฉ๋œ ํŠธ๋ž˜ํ”ฝ์ด SessionMatcher ์†์„ฑ๊ณผ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ๊ทœ์น™ 1์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

      sessionMatcher: !(source.matchTag('tagValues/12345') && host() == 'example.com')

      ๊ฒน์น˜๋Š” ๊ทœ์น™์ด ๋งŽ์œผ๋ฉด ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง€๋ฏ€๋กœ ์ด ์†”๋ฃจ์…˜์„ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ 2

๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ทœ์น™์„ ๊ณ ๋ คํ•˜์„ธ์š”.

  • ๊ทœ์น™ 1

    description: allow to specific GitHub repository (TLS inspect to match specific path)
    priority: 10
    basicProfile: ALLOW
    sessionMatcher: true
    tlsInspectionEnabled: true
    applicationMatcher: request.url().startsWith('github.com/grpc/grpc')
    
  • ๊ทœ์น™ 2

    description: allow TCP proxying from tag 12345 to example.com
    priority: 20
    basicProfile: ALLOW
    sessionMatcher: host() == 'bankofamerica.com'
    

์ด ์˜ˆ์—์„œ ๋ณด์•ˆ ์›น ํ”„๋ก์‹œ๋Š” ๋‘ ๊ทœ์น™์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

  • bankofamerica.com์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ํŠธ๋ž˜ํ”ฝ์„ ํฌํ•จํ•œ ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์ด TLS์— ๋Œ€ํ•ด ๊ฒ€์‚ฌ๋˜์–ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๊ทœ์น™ 1์˜ request.url()๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทœ์น™ 2์—์„œ TLS ๊ฒ€์‚ฌ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์†”๋ฃจ์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    • ๊ทœ์น™ 2์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋” ๋†’์€ ์ˆ˜์ค€์œผ๋กœ ๋†’์ž…๋‹ˆ๋‹ค(์šฐ์„ ์ˆœ์œ„: 5). ๋”ฐ๋ผ์„œ ๊ทœ์น™ 1์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์ „์— ๊ทœ์น™ 2๊ฐ€ ์ ์šฉ๋˜๋ฉฐ bankofamerica.com์˜ ํŠธ๋ž˜ํ”ฝ์€ TLS ๊ฒ€์‚ฌ ์—†์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ๊ถŒ์žฅ: ๊ทœ์น™ 1์˜ ๋ฒ”์œ„๋ฅผ ์ขํ˜€์„œ github.com ๋„๋ฉ”์ธ์— ๋Œ€ํ•ด์„œ๋งŒ TLS ๊ฒ€์‚ฌ๋ฅผ ํ—ˆ์šฉํ•˜์„ธ์š”. ๋ฒ”์œ„๋ฅผ ์ขํžˆ๋ ค๋ฉด ํƒ€๊ฒŸํŒ…๋œ sessionMatcher ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

      sessionMatcher: host() == 'github.com'

์ œํ•œ์‚ฌํ•ญ

TLS ๊ฒ€์‚ฌ๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ์ œํ•œ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„๋Š” ๊ณต๊ฐœ ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฃจํŠธ ์ธ์ฆ ๊ธฐ๊ด€(CA) ์ง‘ํ•ฉ์€ Mozilla ๋ฃจํŠธ ํ”„๋กœ๊ทธ๋žจ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์„œ ํ™•์ธ ๋™์ž‘์€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

    ํ˜„์žฌ ๋ฐฑ์—”๋“œ ํ™•์ธ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋น„๊ณต๊ฐœ ๋˜๋Š” ์ž์ฒด ์„œ๋ช…๋œ ์ธ์ฆ์„œ๊ฐ€ ์žˆ๋Š” ์„œ๋ฒ„๋กœ์˜ ํŠธ๋ž˜ํ”ฝ์„ ๊ฐ€๋กœ์ฑŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • ๋ณด์•ˆ ์›น ํ”„๋ก์‹œ๋Š” ์ธ์ฆ์„œ ํ•ด์ง€ ๋ชฉ๋ก(CRL) ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • TLS ๊ฒ€์‚ฌ๊ฐ€ ์ž‘๋™ํ•˜๋ ค๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ˜„์žฌ ์„œ๋ฒ„ ์ด๋ฆ„ ํ‘œ์‹œ(SNI)๋ฅผ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SNI๋Š” ์„ ํƒ์‚ฌํ•ญ์ธ TLS ์‚ฌ์–‘ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์ด์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ์— ์•”ํ˜ธํ™”๋œ ํด๋ผ์ด์–ธํŠธ Hello(ECH)(์ด์ „์˜ ์•”ํ˜ธํ™”๋œ SNI)๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ TLS ๊ฒ€์‚ฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ECH๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์ „ ์„ค์ •๋œ ์„œ๋ฒ„ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TLS ํ•ธ๋“œ์…ฐ์ดํฌ์˜ ์‹œ์ž‘์„ ์•”ํ˜ธํ™”ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” IETF ํ‘œ์ค€ ์ดˆ์•ˆ์ž…๋‹ˆ๋‹ค. TLS ๊ฒ€์‚ฌ๋Š” ๊ฐ€๋กœ์ฑ„๊ธฐ ํ”„๋ก์‹œ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ์‚ฌ์ „ ์„ค์ •๋œ ์„œ๋ฒ„ ํ‚ค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ECH๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋น„๊ณต๊ฐœ ๋ฃจํŠธ ์ธ์ฆ์„œ๋ฅผ ์‹ ๋ขฐํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ๋น„๊ณต๊ฐœ CA ํ’€์—์„œ CA๋ฅผ ์‚ญ์ œํ•˜๋ฉด ํ•ด๋‹น CA์—์„œ ์„œ๋ช…ํ•œ ์บ์‹œ๋œ ์ธ์ฆ์„œ๊ฐ€ ์ตœ๋Œ€ 28์‹œ๊ฐ„ ๋™์•ˆ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์บ์‹œ๋œ ์ธ์ฆ์„œ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ์ƒˆ CA ํ’€์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก TLS ๊ฒ€์‚ฌ ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณด์•ˆ ์›น ํ”„๋ก์‹œ๋Š” ์ƒˆ ์ธ์ฆ์„œ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.