Apache中每个HTTP请求的不可否认性

时间:2015-06-17 07:53:37

标签: apache security

出于科学项目的目的,我想在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请求不可否认性解决方案存在任何缺点吗?

1 个答案:

答案 0 :(得分:0)

这将是相对较低的表现。它会更复杂,但更高的性能,在C中作为apache模块或在Lua中作为mod_lua脚本。