我正在使用Spring安全性登录页面。该页面需要为用户提供使用其证书而不是用户名和密码的选项。但是我陷入了以下情况:
假设您在浏览器中安装了由XYZ公司签名的证书。现在服务器(可信赖的XYZ)想要验证证书......但问题是:
Q1。服务器如何“请求”浏览器提供“正确的证书”(假设您的浏览器中安装了多个证书)?
Q2。是否可以在登录页面上设置一个按钮,以便用户只有在单击按钮时才能发送证书?
Q3。假设服务器收到了您的证书,服务器是否可以通过查看证书链(由XYZ公司签名)说“是的,您有证明您说的是谁”?
谢谢,
来自安全新手:)
答案 0 :(得分:2)
这是可能的。您所要做的就是设置一个需要客户端证书的ssl站点。浏览器支持开箱即用,大多数都提供内部证书存储,即显示来自操作系统的用户证书存储。您应该参考服务器框架文档,了解如何在ssl连接上打开客户端证书要求。
至于q2,您可以拥有两个网站,即您的应用和您的身份验证提供商。该应用程序显示该按钮,并重定向到您的身份验证提供程序,该提供程序需要客户端证书。然后,auth提供程序使用任何sso协议(oauth2,saml)将用户标识返回给应用程序。
对于证书验证,您可以验证链或在服务器端具有用户名和证书指纹之间的映射。