2016-03-08 53 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