2015-06-17 28 views
0

爲了科學項目的目的,我希望在Apache中實現來自遠程客戶端的每個HTTP請求的不可否認安全服務。爲此,我想使用非對稱密碼術。我假定Apache服務器存儲每個合法客戶端的證書(包含公鑰)。客戶安全地存儲他們的私鑰。Apache中每個HTTP請求的不可抵賴性

在請求中,客戶端會在所選擇的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請求不可否認的解決方案的任何缺點?

回答

0

這將是相對較低的性能。這會更復雜,但更高的性能,在C作爲apache模塊或在Lua作爲mod_lua腳本。