验证ssl证书以验证访问我们的私有api的服务?

时间:2011-03-11 10:09:53

标签: ruby-on-rails ruby api ssl rack


我们有一个Web服务和3个内部客户端访问它 它们都托管在同一个域中,我们为所有这些域使用ssl证书* .ourdomain.com。

所以我们得到了:

我想知道我们是否可以通过验证证书来验证请求的身份(在api上)。所以我们可以废弃基本身份验证。

你认为这是可行的和安全的吗?怎么样 ?我们正在使用rails 3.0.5 / ruby​​ 1.9.2

1 个答案:

答案 0 :(得分:1)

谁在您的环境中控制您的SSL终止? 如果你使用EventMachine,你可以在post_init里面使用

def post_init
    start_tls :private_key_file => 'mycert', :cert_chain_file => 'mychain', :verify_peer => true 
end

然后在回调中你可以检查证书的有效性

  def ssl_verify_peer(cert)
    #TODO: check if the client cert is valid
  end

从安全的角度来看,可以检查客户端ssl证书的有效性。你只需要保守秘密。如果有人窃取该文件,将绕过auth。这就是为什么使用cert + a pasword(双因素身份验证)的原因。

问候。