gpt4 book ai didi

nginx - 收到时通过 NGINX 解密 OpenSSL 二进制文件(即时)

转载 作者:行者123 更新时间:2023-12-01 00:35:19 27 4
gpt4 key购买 nike

我有一个小型嵌入式 Linux 设备,它有 128 MB 闪存,可用作暂存器。该设备运行 NGINX Web 服务器。为了进行固件更新 - 系统通过 NGINX 将加密的二进制文件作为 HTTPS POST 接收到暂存器。然后系统解密文件并刷写不同的 QSPI 闪存设备以完成更新。

固件二进制文件在设备外部加密,如下所示:

openssl smime -encrypt -binary -aes-256-cbc -in plainfile.zip -out encrypted.zip.enc -outform DER yourSslCertificate.pem

固件二进制文件在通过 NGINX 接收后在设备上被解密,如下所示:
openssl smime -decrypt -binary -in encrypted.zip.enc -inform DER -out decrypted.zip -inkey private.key -passin pass:your_password

我真的很想解密通过 NGINX 接收到的二进制文件(即时),以便它以解密的形式出现在闪存暂存器上。

我一直无法在 Google 上找到任何现有的 NGINX 模块可以做到这一点。我怎么能做到这一点?谢谢。

最佳答案

首先,你需要了解一件事。虽然 nginx 将解密文件 - 所有其他请求将被阻止。这就是为什么 nginx 不支持 CGI,只支持 FastCGI。

如果对你没问题(例如,nginx 仅用于更新目的),你可以使用 perl 或 lua 扩展:http://nginx.org/en/docs/http/ngx_http_perl_module.html , https://github.com/openresty/lua-nginx-module

使用此模块,您可以执行 shell。访问上传​​文件需要设置client_body_in_file_only指令 - https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_in_file_only

perl 模块的示例(未经测试):

location /upload {
client_body_in_file_only clean;
perl 'sub {
my $r = shift;
if ($r->request_body_file) {
system("openssl smime -decrypt -binary -in ".$r->request_body_file." -inform DER -out /tmp/decrypted.zip -inkey private.key -passin pass:your_password");
}
}';
}

但是使用fastcgi要好得多。您可以使用轻量级 fastcgi 包装器,例如 fcgiwrap https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/

关于nginx - 收到时通过 NGINX 解密 OpenSSL 二进制文件(即时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41709881/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com