Lua-resty-auto-ssl: Allow_domain-Aufrufhäufigkeit

Erstellt am 6. Okt. 2017  ·  6Kommentare  ·  Quelle: auto-ssl/lua-resty-auto-ssl

Wir haben einen Webservice implementiert, um die Domainvalidierung durchzuführen. Worauf wir neugierig sind, ist die Auswirkung auf die Leistung, wenn eine Webanfrage in der Methode allow_domain ausgegeben wird? Und wie oft wird diese Methode aufgerufen? Wird es NUR kurz vor der Let's Encrypt-Sequenz aufgerufen?

Wenn es ein Zertifikat für eine Domain im Speicher gibt, müssten wir anscheinend nicht allow_domain .

Vielleicht wäre ein bisschen mehr dieser Art von Erklärung in den Dokumenten nützlich.

Dankeschön.

Alle 6 Kommentare

Es wird aufgerufen, ob Sie ein Zertifikat haben oder nicht. Persönlich prüfe ich, ob wir bereits ein Zertifikat haben, bevor ich unser Backend frage, ob es in Ordnung ist, ein neues zu generieren.

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

Ich mache mir auch ein bisschen Sorgen über die Auswirkungen auf den Overhead / die Leistung, bin aber noch in der Planungsphase und noch nicht so weit.

@brianlund danke fürs teilen. Ich habe ein lokales lua_shared_dict implementiert, um unsere Ergebnisse aus dem besagten Webdienst zu 'zwischenspeichern'.

    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

Ihre Idee, den auto_ssl:get("storage") Service zu überprüfen, gefällt mir sehr. Ich könnte mit etwas Ähnlichem gehen. Können wir davon ausgehen, dass dies bei jeder Anfrage passiert? Oder wird lua_shared_dict auto_ssl als Caching-Layer für die Speicherung verwendet? So könnte es aussehen: https://github.com/GUI/lua-resty-auto-ssl/blob/master/lib/resty/auto-ssl/ssl_certificate.lua#L20

Ich frage mich, ob es in Ihrem Beispiel besser wäre, Folgendes zu überprüfen:
ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) Vergleich zu storage direkt anzurufen.

Ich glaube, dass ngx.shared.auto_ssl:get("domain:fullchain_der:" .. domain) nur den Shared-Memory-Cache überprüft. Ich habe vor, mehrere Knoten auszuführen, also benötige ich etwas, das von ihnen gemeinsam genutzt wird (den Redis-Speicher). Ich mag Ihre Cache-Lösung jedoch, sie würde viele Anrufe beim Speicherdienst sparen. Wenn ich Probleme damit sehe, sie so häufig aufzurufen, werde ich das im Hinterkopf behalten.

Ich wollte mich bei dir @jasonbouffard für deinen

Können wir davon ausgehen, dass dies bei jeder Anfrage passiert?

Das ist eine wirklich gute Frage.

Ich gehe davon aus, dass diese Methode aufgerufen wird, wenn kein Zertifikat für die Domäne vorhanden ist, aber ich bin mir nicht sicher.
Konnten Sie es

@Alir3z4

Darauf war ich auch neugierig.
Die Dokumente sind diesbezüglich nicht so transparent, also musste ich den Quellcode überprüfen.

Bei jeder Anfrage macht auto-ssl dies:

  • versucht, Zertifikate aus dem ngx.shared.auto_ssl Wörterbuch abzurufen, die 1 Stunde lang zwischengespeichert werden
  • ruft eine benutzerdefinierte allow_domain Methode auf
  • versucht, Zertifikate aus dem Speicher zu erhalten
  • erstellt ein neues Zertifikat

Wäre perfekt, um dies in README.md zu erklären.
Vielen Dank!

Die Quelle:

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

serathius picture serathius  ·  21Kommentare

ronaldgrn picture ronaldgrn  ·  8Kommentare

domharrington picture domharrington  ·  7Kommentare

sahildeliwala picture sahildeliwala  ·  16Kommentare

jmvbxx picture jmvbxx  ·  6Kommentare