1

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

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

4

1 回答 1

1

使用配置了 SSL 的 Apache Web 服务器在端口 443 上侦听,作为运行 Sinatra 应用程序的瘦服务器的反向代理,例如,我可以将这些添加到我的 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 验证证书。

于 2013-04-25T00:11:36.657 回答