Lua-resty-auto-ssl: allow_domainの呼び出し頻度

作成日 2017年10月06日  ·  6コメント  ·  ソース: auto-ssl/lua-resty-auto-ssl

ドメイン検証を行うためのWebサービスを実装しました。 私たちが興味を持っているのは、 allow_domainメソッドでWebリクエストを発行することによるパフォーマンスへの影響です。 また、このメソッドはどのくらいの頻度で呼び出されますか? 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共有してくれてありがとう。 上記のWebサービスからの結果を「キャッシュ」するためにローカル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で確認できましたか?

@ Alir3z4

これにも興味がありました。
ドキュメントはこれについてそれほど透過的ではないので、ソースコードを調べる必要がありました。

したがって、すべてのリクエストで、auto-sslはこれを行います。

  • 1時間キャッシュされている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 評価

関連する問題

ronaldgrn picture ronaldgrn  ·  8コメント

stackrainbow picture stackrainbow  ·  20コメント

ronaldgetz picture ronaldgetz  ·  10コメント

byrnedo picture byrnedo  ·  16コメント

kshnurov picture kshnurov  ·  3コメント