出于科学项目的目的,我想在Apache中为从远程客户端发出的每个HTTP请求实现不可否认安全服务。为此,我想使用非对称密码术。我假设Apache服务器存储每个合法客户端的证书(带有公钥)。客户端安全地存储他们的私钥。
在请求中,在所选择的HTTP头字段上将存在客户端签名(例如,IP地址,请求的URL)。签名将放在GET或POST参数中。在每次请求之后,应将不可否认记录写入日志(我选择Apache的access.log - 默认情况下它存储请求的URL,IP地址,时间等。)
要执行签名检查和访问控制,我想使用带有RewriteMap的mod_rewrite模块和外部脚本来完成签名的非常化和访问控制。这就是我到目前为止所做的:
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请求不可否认性解决方案存在任何缺点吗?
答案 0 :(得分:0)
这将是相对较低的表现。它会更复杂,但更高的性能,在C中作为apache模块或在Lua中作为mod_lua脚本。