2013-01-06 165 views
0

我正在使用spring安全性登录页面。该页面需要提供用户使用其证书而不是用户名和密码的选项。不过,我被困在以下情况:验证x509客户端证书

假设您的浏览器中安装了XYZ公司签署的证书。现在服务器(信任的XYZ)想要验证证书......但问题是:

Q1。服务器“请求”浏览器如何提供“正确的证书”(假设您的浏览器中安装了多个证书)? Q2302。是否可以在登录页面上有一个按钮,以便用户只有在点击该按钮时才能发送他的证书?

Q3。说服务器收到了你的证书,服务器可以简单地通过查看证书链(由XYZ公司签名)说“是的,你有证据表明你是谁”?

感谢,

从安全的新手:)

回答

2

这是可能的。你所要做的就是设置一个需要客户端证书的SSL站点。浏览器支持这个开箱即用的功能,大多数都提供了一个内部证书存储,即通过操作系统显示一个用户证书存储。您应该咨询您的服务器框架文档,了解如何打开ssl连接上的客户端证书要求。

至于q2,您可以拥有两个网站,您的应用程序和您的身份验证提供程序。该应用程序显示按钮,这将重定向到需要客户端证书的身份验证提供程序。然后,auth提供者使用任何sso协议(oauth2,saml)将用户标识返回给应用程序。

至于证书验证,您可以验证链或在服务器端有用户名和证书缩略图之间的映射。

+0

谢谢,它清除了我的怀疑...但现在实施,我导出了我的证书(由受信任的CA签名)并尝试手动将我的名字和根证书指纹映射到我的服务器端信任的CA.不知何故,我无法找到相同的指纹..我在这里错过了什么? (顺便说一句,我是关于建立与安装在我的浏览器CA的SSL) – sglai

+0

我从来没有试图手动映射用户证书指纹。我一直依赖Windows Server中内置的CA,在该服务器中,rser证书映射到Active Directory中的用户帐户。这(当然还有Windows集成身份验证)总是按预期工作。 –