如何从Ruby Web服务访问客户端X.509证书?客户端正在传递客户端证书,浏览器正在为我进行身份验证,但我也希望在我的Ruby代码中查看证书。
这不是Rails。我正在寻找使用Sinatra的答案。并且,来自网络服务器,如nginx或lighttpd。
答案 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验证证书。