2016-03-08 52 views
1

我想製作一個簡單的python CGI腳本(在我的情況下由apache託管)來讀取客戶端證書並記錄訪問腳本的人員。我的問題似乎很簡單,但我無法在WWW上找到任何信息:使用python CGI腳本,您如何獲取客戶端證書?我已經有了一個工作腳本和SSL,只是試圖破壞客戶端證書上的代碼。我打算嘗試另一個web服務器,但我想保持它作爲香草儘可能,所以沒有web框架(django等)與Python作爲CGI網絡應用程序相互認證?

+0

另一種可能性是隻用[this](https://www.piware.de/2011/01/creating-an-https-server-in-python/)在Python中編寫服務器。但即使如此,我仍然希望獲得客戶證書。 – Derrick

回答

2

如果您使用Apache HTTPD與mod_ssl然後這實際上很容易。您可以指示mod_ssl的出口SSL related information into environment variables這種配置指令:

SSLOptions +StdEnvVars 

然後,您可以讀取環境變量所需的所有信息,而無需任何外部依賴 - 對用Perl編寫例如基本的CGI腳本從客戶端的證書會是什麼樣顯示COMMONNAME這樣的:

#!/usr/bin/perl 

use strict; 

print "Content-type: text/html\n"; 
print "\n"; 
print $ENV{"SSL_CLIENT_S_DN_CN"} 

我約SSL authentication in Apache HTTPD幾年前寫的全長文章,但它只有在斯洛伐克語可用。但它可以是translated to English with Google Translate

+0

我在等待答案時發現了這個確切的解決方案。使用python,環境變量存儲在os.environ.items()中。感謝您及時的回覆! – Derrick