Lua-resty-auto-ssl: allow_domain frecuencia de llamada

Creado en 6 oct. 2017  ·  6Comentarios  ·  Fuente: auto-ssl/lua-resty-auto-ssl

Implementamos un servicio web para realizar la validación de dominios. ¿Lo que nos interesa es el impacto en el rendimiento de emitir una solicitud web en el método allow_domain ? Además, ¿con qué frecuencia se llama a este método? ¿Se llama SOLO justo antes de la secuencia Let's Encrypt?

Parecería que si hubiera un certificado para un dominio almacenado, no necesitaríamos llamar allow_domain .

Quizás un poco más de este tipo de explicación sería útil en los documentos.

Gracias.

Todos 6 comentarios

Se llama si tiene un certificado o no. Personalmente, verifico si ya tenemos un certificado antes de preguntarle a nuestro backend si está bien generar uno nuevo.

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

También estoy un poco preocupado por el impacto de la sobrecarga / rendimiento, pero todavía estoy en las etapas de planificación y aún no he llegado tan lejos.

@brianlund gracias por compartir. Implementé un lua_shared_dict local para 'almacenar en caché' nuestros resultados de dicho servicio 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

Me gusta mucho tu idea de comprobar el servicio auto_ssl:get("storage") . Podría ir con algo similar. ¿Podemos asumir que esto sucede en cada solicitud? ¿O se está usando lua_shared_dict auto_ssl una capa de almacenamiento en caché? Parece que podría ser: https://github.com/GUI/lua-resty-auto-ssl/blob/master/lib/resty/auto-ssl/ssl_certificate.lua#L20

Me pregunto si sería mejor en su ejemplo verificar:
ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) vs llamar a storage directamente.

Creo que ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) solo verifica la memoria caché compartida. Planeo ejecutar varios nodos, por lo que necesito algo que se comparta entre ellos (el almacenamiento de redis). Sin embargo, me gusta su solución de caché, ahorraría muchas llamadas al servicio de almacenamiento, si veo algún problema al llamarlo con tanta frecuencia, lo tendré en cuenta.

Quería agradecerle a @jasonbouffard por su código de demostración allí, ¡fue un bloque de construcción extremadamente útil para mí! ¡Lo aprecio!

¿Podemos asumir que esto sucede en cada solicitud?

Esta es una muy buena pregunta.

Supongo que se llama a este método cuando no hay un certificado para el dominio, pero no estoy seguro.
¿Has podido confirmarlo @jasonbouffard ?

@ Alir3z4

También tenía curiosidad por esto.
Los documentos no son tan transparentes sobre esto, así que tuve que inspeccionar el código fuente.

Entonces, en cada solicitud, auto-ssl hace esto:

  • intenta obtener certificados del diccionario ngx.shared.auto_ssl , que se almacenan en caché durante 1 hora
  • llama a un método allow_domain definido por el usuario
  • intenta obtener certificados del almacenamiento
  • crea un nuevo certificado

Sería perfecto para explicar esto en README.md.
¡Gracias!

La fuente:

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

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

byrnedo picture byrnedo  ·  16Comentarios

domharrington picture domharrington  ·  7Comentarios

discobean picture discobean  ·  8Comentarios

n11c picture n11c  ·  13Comentarios

prionkor picture prionkor  ·  11Comentarios