Authentication 验证x509客户端证书

Authentication 验证x509客户端证书,authentication,spring-security,x509certificate,Authentication,Spring Security,X509certificate,我正在使用spring security创建一个登录页面。该页面需要为用户提供一个选项来使用他们的证书,而不是用户名和密码。但是,我被困在以下场景中: 假设您的浏览器中安装了由XYZ公司签署的证书。现在服务器(受信任的XYZ)想要验证证书。。。但问题是: 问题1。服务器如何“请求”浏览器提供“正确的证书”(假设您的浏览器中安装了多个证书) 问题2。是否可以在登录页面上设置一个按钮,以便用户仅在单击该按钮时发送其证书 第三季度。假设服务器收到了您的证书,服务器是否可以通过查看证书链(由XYZ公司签

我正在使用spring security创建一个登录页面。该页面需要为用户提供一个选项来使用他们的证书,而不是用户名和密码。但是,我被困在以下场景中:

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

问题1。服务器如何“请求”浏览器提供“正确的证书”(假设您的浏览器中安装了多个证书)

问题2。是否可以在登录页面上设置一个按钮,以便用户仅在单击该按钮时发送其证书

第三季度。假设服务器收到了您的证书,服务器是否可以通过查看证书链(由XYZ公司签名)简单地说“是的,您有证据证明您是谁”

谢谢


来自安全新手:)

这是可能的。您所要做的就是使用所需的客户端证书设置ssl站点。浏览器支持这种开箱即用的方式,大多数浏览器提供内部证书存储,即显示操作系统中的用户证书存储。您应该查阅服务器框架文档,了解如何在ssl连接上启用客户端证书要求

至于第二季度,你可以有两个网站,你的应用程序和认证提供商。应用程序显示按钮,并重定向到需要客户端证书的身份验证提供商。然后,身份验证提供程序使用任何sso协议(oauth2,saml)将用户标识返回给应用程序


至于证书验证,您可以验证链,也可以在服务器端设置用户名和证书指纹之间的映射。

谢谢,这消除了我的疑虑。。。但现在说到实现,我导出了我的证书(由可信CA签名),并尝试手动将我的姓名和根证书指纹映射到我的服务器端可信CA。不知何故,我找不到相同的指纹。。我是不是遗漏了什么?(顺便说一句,我打算在我的浏览器中安装一个ssl和CA)我从未尝试手动映射用户证书指纹。我一直依赖于Windows服务器中内置的CA,其中rser证书映射到Active Directory中的用户帐户。这(当然还有Windows集成身份验证)始终按预期工作。