收到(动态)通过NGINX解密OpenSSL二进制文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了收到(动态)通过NGINX解密OpenSSL二进制文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1583字,纯文字阅读大概需要3分钟。
内容图文
![收到(动态)通过NGINX解密OpenSSL二进制文件](/upload/InfoBanner/zyjiaocheng/967/134ef25040f844268f1fb1066d82ba4a.jpg)
我有一个小型嵌入式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要好得多.您可以使用light fastcgi wraper,例如fcgiwrap https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/
内容总结
以上是互联网集市为您收集整理的收到(动态)通过NGINX解密OpenSSL二进制文件全部内容,希望文章能够帮你解决收到(动态)通过NGINX解密OpenSSL二进制文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。