Ich öffne dieses Thema, um die Idee einer reinen Lua ACME-Client-Implementierung zu verfolgen (anstatt sich auf dehydriert zu verlassen). Ich bin mir nicht sicher, ob / wann dies passieren wird, aber ich dachte, es lohnt sich, auf ein Problem zu verweisen und es zu diskutieren.
Diese Idee ist seit der ersten Erstellung von lua-resty-auto-ssl im Umlauf, wie der TODO-Abschnitt der README von Anfang an feststellte:
Wir setzen derzeit auf dehydrated als unseren Let's Encrypt-Client. Es wird auf nicht-blockierende Weise über lua-resty-shell und sockproc aufgerufen , es könnte jedoch einfacher sein, diesen Ansatz eines Tages durch einen nativen OpenResty Let's Encrypt-Client zu ersetzen.
Größtenteils hat uns die Verwendung von dehydrated gute Dienste geleistet und es uns ermöglicht, die gesamte zugrunde liegende ACME-Protokollarbeit für die Registrierung von Zertifikaten bei Let's Encrypt zu entlasten. Abgesehen davon erhöht die Abhängigkeit von lua-resty-shell und sockproc aus mehreren Gründen auch die Komplexität von lua-resty-auto-ssl:
Nachdem das ACME v2-Protokoll nun fertig gestellt ist, beschäftigte ich mich zunehmend mit dieser Idee. Einerseits erfordert die Erstellung einer reinen Lua ACME-Client-Implementierung eine anständige Menge an neuer Arbeit, aber die Aussicht, die Abhängigkeit von sockproc ablegen zu können, ist ansprechend (nicht, dass mit sockproc etwas nicht stimmt, aber es verkompliziert nur unser Setup /Installation und Architektur).
Wenn wir diesen Weg gehen wollten, war meine allgemeine Idee die Schaffung von 1 oder 2 neuen Lua-Bibliotheken:
lua-resty-acme
Bibliothek zu erstellen, die die OpenSSL-Bibliothek und lua-resty-http verwendet, um das ACME v2-Protokoll tatsächlich zu implementieren. lua-resty-auto-ssl würde immer noch als Bibliothek auf höherer Ebene existieren, die lua-resty-acme verwendet (lua-resty-acme würde nur das Protokoll implementieren und eine ähnliche Rolle spielen wie dehydriert, während lua-resty-auto-ssl würde immer noch die gesamte nginx-Integration, die SNI-basierte Registrierung, die Zertifikatsspeicherung usw. durchführen).Auch hier bin ich mir nicht sicher, ob/wann dies passieren wird, aber ich wollte zumindest einige dieser Ideen endlich in einem konkreteren Format veröffentlichen.
Ich denke, das wäre eine großartige Idee. Das Entfernen von sockproc und dehydrated wird die Komplexität des gesamten Prozesses verringern, was wahrscheinlich zu weniger Fehlern führt (zB der jüngste Fehler im Zusammenhang mit der Vereinbarung von Let's Encrypt-Begriffen in dehydrated).
👍
Haben Sie sich dieses Projekt angesehen? https://github.com/fffonion/lua-resty-acme
Dieses Projekt verwendet ein FFI-basiertes openssl-Backend.
Hilfreichster Kommentar
Ich denke, das wäre eine großartige Idee. Das Entfernen von sockproc und dehydrated wird die Komplexität des gesamten Prozesses verringern, was wahrscheinlich zu weniger Fehlern führt (zB der jüngste Fehler im Zusammenhang mit der Vereinbarung von Let's Encrypt-Begriffen in dehydrated).
👍