【问题标题】:How to access client X.509 certificate from Ruby web service (not Rails)?如何从 Ruby Web 服务(不是 Rails)访问客户端 X.509 证书?
【发布时间】:2014-05-02 19:55:22
【问题描述】:

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

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

【问题讨论】:

  • 您写过什么,或者您只是希望有人有一个工作样本?我们希望您展示您搜索过的内容,以及为什么它没有帮助,或者您编写的代码以及它为什么不起作用。
  • 我会研究 Openssl 的验证功能。
  • stackoverflow.com/questions/14173354/…。如那里所述,Nginx/Apache 服务器会处理这个问题。在其配置中,也许您可​​以做一些事情来传递这些标头,然后使用 OpenSSL(或其他东西)来处理证书。

标签: ruby web-services certificate sinatra rack


【解决方案1】:

使用 Apache Web 服务器在端口 443 上侦听并配置 SSL,作为运行 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 验证证书。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2021-08-29
    • 2020-10-23
    • 2021-03-13
    • 2011-06-26
    • 2020-03-04
    相关资源
    最近更新 更多