[英]Non-repudiation of each HTTP request in Apache
出于科研项目的目的,我想在Apache中为来自远程客户端的每个HTTP请求实现不可否认的安全服务。 为此,我想使用非对称密码学。 我假设Apache服务器存储每个合法客户端的证书(带有公钥)。 客户端安全地存储其私钥。
在请求中,在选定的HTTP标头字段(例如IP地址,请求的URL)上将有客户端的签名。 签名将放置在GET或POST参数中。 在每个请求之后,都必须将不可否认记录写入日志(我选择了Apache的access.log-默认情况下,它存储了请求的URL,IP地址,时间等)。
为了执行签名检查和访问控制,我想将Mod_rewrite模块与RewriteMap和外部脚本一起使用来完成签名实现和访问控制。 这是我到目前为止所做的:
mod_rewrite规则:
RewriteEngine on
RewriteMap d2u "prg:/var/www/script/map-script2.pl"
RewriteCond "${d2u:%{QUERY_STRING}}" =false
RewriteRule ^ - [F]
map-script2.pl:
#!/usr/bin/perl
$| = 1; # Turn off I/O buffering
while (<STDIN>) {
#here will be signature and other data extraction from the query string and veryfication
if( signature verification result ){
print "true\n";
}
else{
print "false\n";
}
}
还有其他方法可以做到这一点(使用外部脚本可能存在效率问题)?
您是否看到我的HTTP请求不可否认性解决方案的任何缺点?
那将是相对较低的性能。 以C作为apache模块或以Lua作为mod_lua脚本,会更加复杂,但性能更高。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.