hmac: HMAC-Funktionen für nginx-module-lua und LuaJIT
Installation
Wenn Sie das RPM-Repository-Abonnement noch nicht eingerichtet haben, melden Sie sich an. Dann können Sie mit den folgenden Schritten fortfahren.
CentOS/RHEL 7 oder Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-hmac
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-hmac
Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.
Dieses Dokument beschreibt lua-resty-hmac v0.6, das am 31. Mai 2023 veröffentlicht wurde.
Diese Bibliothek erfordert einen NGINX-Build mit OpenSSL, dem ngx_lua-Modul und LuaJIT 2.0.
Synopsis
# nginx.conf:
server {
location = /test {
content_by_lua_file conf/test.lua;
}
}
-- conf/test.lua:
local hmac = require "resty.hmac"
local hmac_sha1 = hmac:new("secret_key", hmac.ALGOS.SHA1)
if not hmac_sha1 then
ngx.say("Fehler beim Erstellen des hmac_sha1-Objekts")
return
end
local ok = hmac_sha1:update("he")
if not ok then
ngx.say("Fehler beim Hinzufügen von Daten")
return
end
ok = hmac_sha1:update("llo")
if not ok then
ngx.say("Fehler beim Hinzufügen von Daten")
return
end
local mac = hmac_sha1:final() -- binärer mac
local str = require "resty.string"
ngx.say("hmac_sha1: ", str.to_hex(mac))
-- Ausgabe: "hmac_sha1: aee4b890b574ea8fa4f6a66aed96c3e590e5925a"
-- Vergessen Sie nicht, nach final zurückzusetzen!
if not hmac_sha1:reset() then
ngx.say("Fehler beim Zurücksetzen von hmac_sha1")
return
end
-- kurze Version
ngx.say("hmac_sha1: ", hmac_sha1:final("world", true))
-- Ausgabe: "hmac_sha1: 4e9538f1efbe565c522acfb72fce6092ea6b15e0"
Methoden
Um diese Bibliothek zu laden,
- müssen Sie den Pfad dieser Bibliothek in der lua_package_path-Direktive von ngx_lua angeben. Zum Beispiel,
lua_package_path "/path/to/lua-resty-hmac/lib/?.lua;;";. - verwenden Sie
require, um die Bibliothek in eine lokale Lua-Variable zu laden:
local hmac = require "resty.hmac"
new
syntax: local hmac_sha256 = hmac:new(key [, hash_algorithm])
Erstellt eine neue HMAC-Instanz. Bei einem Fehler wird nil zurückgegeben.
Das Argument key gibt den Schlüssel an, der bei der Berechnung des Message Authentication Code (MAC) verwendet werden soll. key ist ein Lua-String, der druckbare Zeichen oder Binärdaten enthalten kann.
Das Argument hash_algorithm gibt an, welcher Hash-Algorithmus verwendet werden soll (hmac.ALGOS.MD5, hmac.ALGOS.SHA1, hmac.ALGOS.SHA256, hmac.ALGOS.SHA512). Der Standardwert ist hmac.ALGOS.MD5.
update
syntax: hmac_sha256:update(data)
Aktualisiert die MAC-Berechnung, um neue Daten einzuschließen. Bei einem Fehler wird false zurückgegeben.
Das Argument data gibt die zusätzlichen Daten an, die in die MAC aufgenommen werden sollen. data ist ein Lua-String, der druckbare Zeichen oder Binärdaten enthalten kann.
final
syntax: local mac = hmac_sha256:final([data, output_hex])
Finalisiert die MAC-Berechnung und gibt den endgültigen MAC-Wert zurück. Bei einem Fehler wird nil zurückgegeben. Wenn output_hex nicht true ist, wird ein Lua-String zurückgegeben, der den rohen, binären MAC enthält. Wenn output_hex true ist, wird ein Lua-String zurückgegeben, der die hexadezimale Darstellung des MAC enthält.
Das Argument data gibt die zusätzlichen Daten an, die vor der Finalisierung der Berechnung in die MAC aufgenommen werden sollen. Der Standardwert ist nil.
Das Argument output_hex gibt an, ob der MAC als Hex oder binär zurückgegeben werden soll. Wenn true, wird der MAC als Hex zurückgegeben. Der Standardwert ist false.
reset
syntax: hmac_sha256:reset()
Setzt den internen HMAC-Kontext zurück, damit er wiederverwendet werden kann, um einen neuen MAC zu berechnen. Bei einem Fehler wird false zurückgegeben. Bei Erfolg bleiben der key und der hash_algorithm gleich, aber alle anderen Informationen werden gelöscht.
Dies MUSS nach hmac_sha256:final() aufgerufen werden, um einen neuen MAC mit derselben HMAC-Instanz zu berechnen.
Voraussetzungen
- LuaJIT 2.0+
- ngx_lua-Modul
- lua-resty-string 0.8+
- OpenSSL 1.0.0+
Siehe auch
- das ngx_lua-Modul: http://wiki.nginx.org/HttpLuaModule
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-hmac.