2013-03-23 81 views
1

如何从Ruby Web服务访问客户端X.509证书?客户端正在传递客户端证书,浏览器正在为我进行身份验证,但我还想在Ruby代码中查看证书。如何从Ruby Web服务(不是Rails)访问客户端X.509证书?

这不是Rails。例如,我正在使用Sinatra寻找答案。而且,从一个网络服务器,如nginx或lighttpd。

+2

你写了什么,或者你只是希望有人有一个工作样本?我们希望您能够展示您搜索的内容,为什么它没有帮助,或者您编写的代码以及为什么不起作用。 – 2013-03-23 05:01:36

+1

我会考虑Openssl的验证功能。 – 2013-03-23 21:47:28

+0

请参阅http://stackoverflow.com/questions/14173354/how-to-mimic-browser-x509-client-certificate-verification-without-access-to-http。如前所述,Nginx/Apache服务器将负责处理这个问题。在它的配置中,你可以做一些事情来传递这些头文件,然后使用OpenSSL(或其他)来处理证书。 – iain 2013-03-24 12:57:02

回答

1

使用Apache Web服务器侦听端口443与SSL配置,作为反向代理运行的末日应用程序瘦服务器,例如,我可以将这些添加到我的Apache虚拟主机配置:

RequestHeader set SSL-Client-M-Serial %{SSL_CLIENT_M_SERIAL}s 
RequestHeader set SSL-Client-S-DN %{SSL_CLIENT_S_DN}s 
RequestHeader set SSL-Client-I-DN %{SSL_CLIENT_I_DN}s 

然后从我的西纳特拉的代码,我可以找到在机架环境中,这些值,例如:

puts "#{request.env['HTTP_SSL_CLIENT_S_DN']}" 

我没有完整的客户端证书,因为我有阿帕奇验证证书是确定。

相关问题