Lua-resty-auto-ssl: allow_domain لتكرار المكالمات

تم إنشاؤها على ٦ أكتوبر ٢٠١٧  ·  6تعليقات  ·  مصدر: auto-ssl/lua-resty-auto-ssl

لقد قمنا بتنفيذ خدمة ويب للقيام بالتحقق من صحة المجال. ما يثير فضولنا هو تأثير الأداء لإصدار طلب ويب بطريقة allow_domain ؟ كم مرة تسمى هذه الطريقة أيضًا؟ هل يتم استدعاؤه فقط قبل تسلسل Let's Encrypt مباشرة؟

يبدو أنه إذا كانت هناك شهادة لمجال في التخزين فلن نحتاج إلى الاتصال بـ 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) يتحقق فقط من ذاكرة التخزين المؤقت للذاكرة المشتركة. أخطط لتشغيل عدة عقد ، لذا أحتاج إلى شيء يتم مشاركته عبرها (تخزين redis). ومع ذلك ، يعجبني حل ذاكرة التخزين المؤقت ، فإنه سيوفر الكثير من المكالمات إلى خدمة التخزين ، إذا رأيت أي مشاكل في الاتصال به كثيرًا ، فسأضع ذلك في الاعتبار.

أردت أن أشكرك jasonbouffard على الكود التجريبي الخاص بك هناك - لقد كان ذلك لبنة مفيدة للغاية بالنسبة لي! نقدر ذلك!

هل يمكننا افتراض حدوث ذلك عند كل طلب؟

هذا السؤال حقا جيد.

افتراضي هو أنه يتم استدعاء هذه الطريقة عندما لا تكون هناك شهادة للمجال ، لكنني لست متأكدًا من ذلك.
هل تمكنت من تأكيد ذلك jasonbouffard ؟

MustafaHosny اللهم امين

كنت أشعر بالفضول حيال هذا أيضًا.
المستندات ليست شفافة حول هذا الأمر ، لذلك اضطررت إلى فحص شفرة المصدر.

لذلك ، عند كل طلب ، يقوم auto-ssl بما يلي:

  • يحاول الحصول على شهادات من قاموس ngx.shared.auto_ssl ، والتي يتم تخزينها مؤقتًا لمدة ساعة واحدة
  • يستدعي طريقة 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 التقييمات

القضايا ذات الصلة

sahildeliwala picture sahildeliwala  ·  16تعليقات

n11c picture n11c  ·  13تعليقات

jmvbxx picture jmvbxx  ·  6تعليقات

ronaldgetz picture ronaldgetz  ·  10تعليقات

byrnedo picture byrnedo  ·  16تعليقات