Lua-resty-auto-ssl: permitir frequência de chamada de domínio

Criado em 6 out. 2017  ·  6Comentários  ·  Fonte: auto-ssl/lua-resty-auto-ssl

Implementamos um serviço web para fazer a validação de domínio. O que estamos curiosos é sobre o impacto no desempenho de emitir uma solicitação da web no método allow_domain ? Além disso, com que frequência esse método é chamado? É chamado APENAS antes da sequência Let's Encrypt?

Parece que há um certificado para um domínio em armazenamento que não precisaríamos chamar de allow_domain .

Talvez um pouco mais desse tipo de explicação seja útil nos documentos.

Obrigada.

Todos 6 comentários

É chamado quer você tenha um certificado ou não. Pessoalmente, eu verifico se já temos um certificado antes de perguntar ao nosso back-end se está tudo bem para gerar um novo.

-- 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 ...

Também estou um pouco preocupado com a sobrecarga / impacto no desempenho, mas ainda estou nos estágios de planejamento e não cheguei tão longe ainda.

@brianlund obrigado por compartilhar. Implementei um lua_shared_dict para 'armazenar em cache' nossos resultados do referido serviço da web.

    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

Gosto muito da sua ideia de verificar o serviço auto_ssl:get("storage") . Eu poderia ir com algo semelhante. Podemos supor que isso aconteça em todas as solicitações? Ou lua_shared_dict auto_ssl sendo usado como uma camada de cache para armazenamento? Parece que pode ser: https://github.com/GUI/lua-resty-auto-ssl/blob/master/lib/resty/auto-ssl/ssl_certificate.lua#L20

Eu me pergunto se seria melhor em seu exemplo verificar:
ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) vs chamar storage diretamente.

Acredito que ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) apenas verifica o cache de memória compartilhada. Pretendo executar vários nós, então preciso de algo que seja compartilhado entre eles (o armazenamento redis). Eu gosto da sua solução de cache, porém, ela economizaria muitas chamadas para o serviço de armazenamento, se eu vir algum problema em chamá-la com tanta frequência, vou manter isso em mente.

Gostaria de agradecer a você @jasonbouffard por seu código de demonstração lá - foi um bloco de construção extremamente útil para mim! Agradeço!

Podemos supor que isso aconteça em todas as solicitações?

Esta é uma pergunta muito boa.

Minha suposição é que este método é chamado quando não há certificado para o domínio, mas não tenho certeza sobre isso.
Você conseguiu confirmar @jasonbouffard ?

@ Alir3z4

Eu também estava curioso sobre isso.
Os documentos não são tão transparentes sobre isso, então tive que inspecionar o código-fonte.

Portanto, em cada solicitação, o auto-ssl faz o seguinte:

  • tenta obter certificados do dicionário ngx.shared.auto_ssl , que são armazenados em cache por 1 hora
  • chama um método allow_domain definido pelo usuário
  • tenta obter certificados do armazenamento
  • cria um novo certificado

Seria perfeito explicar isso no README.md.
Obrigado!

A fonte:

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

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

stackrainbow picture stackrainbow  ·  20Comentários

danDanV1 picture danDanV1  ·  7Comentários

discobean picture discobean  ·  8Comentários

arya6000 picture arya6000  ·  11Comentários

prionkor picture prionkor  ·  11Comentários