如何从Ruby Web服务(而不是Rails)访问客户端X.509证书?

时间:2013-03-23 00:50:07

标签: ruby web-services certificate sinatra rack

如何从Ruby Web服务访问客户端X.509证书?客户端正在传递客户端证书,浏览器正在为我进行身份验证,但我也希望在我的Ruby代码中查看证书。

这不是Rails。我正在寻找使用Sinatra的答案。并且,来自网络服务器,如nginx或lighttpd。

1 个答案:

答案 0 :(得分:1)

使用在配置了​​SSL的端口443上侦听的Apache Web服务器,作为运行Sinatra应用程序的Thin服务器的反向代理,我可以将这些添加到我的Apache VirtualHost配置中:

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 

然后从我的Sinatra代码中,我可以在Rack环境中找到这些值,例如:

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

我没有完整的客户端证书,这是正常的,因为我正在让Apache验证证书。