Lua-resty-auto-ssl: allow_domain рдХреЙрд▓ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдЕрдХреНрддреВре░ 2017  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: auto-ssl/lua-resty-auto-ssl

рд╣рдордиреЗ рдбреЛрдореЗрди рд╕рддреНрдпрд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рд▓рд╛рдЧреВ рдХреА рд╣реИред рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕реБрдХ рд╣реИрдВ рдХрд┐ allow_domain рдкрджреНрдзрддрд┐ рдореЗрдВ рд╡реЗрдм рдЕрдиреБрд░реЛрдз рдЬрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдХреНрдпрд╛ рд╣реИ? рд╕рд╛рде рд╣реА рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрд┐рддрдиреА рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЗрд╕реЗ рд▓реЗрдЯреНрд╕ рдПрдирдХреНрд░рд┐рдкреНрдЯ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рднрдВрдбрд╛рд░рдг рдореЗрдВ рдХрд┐рд╕реА рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рдорд╛рдг рд╣реИ рдХрд┐ рд╣рдореЗрдВ allow_domain рдкрд░ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рд╢рд╛рдпрдж рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

рдзрдиреНрдпрд╡рд╛рджред

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рд░реНрдЯрд┐рдлрд┐рдХреЗрдЯ рд╣реИ рдпрд╛ рдирд╣реАрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЬрд╛рдВрдЪрддрд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдмреИрдХрдПрдВрдб рд╕реЗ рдкреВрдЫрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдХреЛрдИ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдпрд╣ рдПрдХ рдирдпрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдареАрдХ рд╣реИ рдпрд╛ рдирд╣реАрдВред

-- first check if we have the certificate already, else check with backend if we allow it 
    local certstorage = auto_ssl:get("storage")

    local fullchain_pem, privkey_pem = certstorage:get_cert(domain)
    if fullchain_pem then
      return true
    else ...

рдореИрдВ рдУрд╡рд░рд╣реЗрдб/рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рднрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдереЛрдбрд╝рд╛ рдЪрд┐рдВрддрд┐рдд рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдпреЛрдЬрдирд╛ рдХреЗ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реВрдВ рдФрд░ рдЕрднреА рддрдХ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реБрдЖ рд╣реВрдВред

@brianlund рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЙрдХреНрдд рд╡реЗрдм рд╕реЗрд╡рд╛ рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ 'рдХреИрд╢' рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рдиреАрдп lua_shared_dict рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

    auto_ssl:set("allow_domain", function(domain)
      local http = require "resty.http"
      local httpc = http.new()
      local cjson = require "cjson"
      local our_allow_domain_cache = ngx.shared.our_allow_domain_cache

      local found = our_allow_domain_cache:get(domain)

      if found == nil then
        local res, err = httpc:request_uri("[is domain allowed web service]"..domain, {
          method = "GET",
        })

        if not res then
          found = false
        else
          local data = cjson.decode(res.body)
          found = data.found
        end

        -- Cache for 60 seconds, for now...
        our_allow_domain_cache:set(domain, found, 60)
      else
        if found then
          -- Known good domain, keep it in cache for a little longer
          our_allow_domain_cache:set(domain, found, 300)
        end
      end

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ auto_ssl:get("storage") рд╕реЗрд╡рд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХрд╛ рдЖрдкрдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред рдореИрдВ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рд╛рде рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдХреНрдпрд╛ рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣реЛрддрд╛ рд╣реИ? рдпрд╛ lua_shared_dict auto_ssl рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдХреИрд╢рд┐рдВрдЧ рдкрд░рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ? рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: https://github.com/GUI/lua-resty-auto-ssl/blob/master/lib/resty/auto-ssl/ssl_certificate.lua#L20

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЬрд╛рдВрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛:
ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) рдмрдирд╛рдо рд╕реАрдзреЗ storage рдХреЙрд▓ рдХрд░рдирд╛ред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) рдХреЗрд╡рд▓ рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реА рдХреИрд╢ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХрдИ рдиреЛрдбреНрд╕ рдЪрд▓рд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдРрд╕рд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрдирдХреЗ рдмреАрдЪ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП (рд░реЗрдбрд┐рд╕ рд╕реНрдЯреЛрд░реЗрдЬ)ред рдореБрдЭреЗ рдЖрдкрдХрд╛ рдХреИрд╢ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реЗрд╡рд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдХреЙрд▓ рдмрдЪрд╛рдПрдЧрд╛, рдЕрдЧрд░ рдореБрдЭреЗ рдЗрд╕реЗ рдмрд╛рд░-рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреВрдВрдЧрд╛ред

рдореИрдВ рд╡рд╣рд╛рдВ рдЖрдкрдХреЗ рдбреЗрдореЛ рдХреЛрдб рдХреЗ рд▓рд┐рдП @jasonbouffard рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХ рдерд╛! рдЗрд╕рдХреА рдкреНрд░рд╢рдВрд╕рд╛ рдХрд░рдирд╛!

рдХреНрдпрд╛ рд╣рдо рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╣рд░ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣реЛрддрд╛ рд╣реИ?

рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╢реНрди рд╣реИред

рдореЗрд░реА рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред
рдХреНрдпрд╛ рдЖрдк @jasonbouffard рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░

@Alir3z4

рдореИрдВ рднреА рдЗрд╕рдХреЛ рд▓реЗрдХрд░ рдЙрддреНрд╕реБрдХ рдерд╛ред
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЗрддрдиреЗ рдкрд╛рд░рджрд░реНрд╢реА рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рддреЛ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░, рдСрдЯреЛ-рдПрд╕рдПрд╕рдПрд▓ рдпрд╣ рдХрд░рддрд╛ рд╣реИ:

  • ngx.shared.auto_ssl рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ 1 рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд allow_domain рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ
  • рднрдВрдбрд╛рд░рдг рд╕реЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ
  • рдПрдХ рдирдпрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдмрдирд╛рддрд╛ рд╣реИ

рдЗрд╕реЗ README.md рдореЗрдВ рд╕рдордЭрд╛рдирд╛ рд╕рд╣реА рд╣реЛрдЧрд╛ред
рдзрдиреНрдпрд╡рд╛рдж!

рд╕реНрд░реЛрдд:

https://github.com/auto-ssl/lua-resty-auto-ssl/blob/86d3c94807ad1585b464fad2d4defb379f9c152a/lib/resty/auto-ssl/ssl_certificate.lua#L104 -L157

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕