Authentication 验证用户';s用于网站登录的私钥

Authentication 验证用户';s用于网站登录的私钥,authentication,web,public-key-encryption,public-key,Authentication,Web,Public Key Encryption,Public Key,我正在尝试实现一个登录系统,使用公钥身份验证登录网站。我不确定这是否可行 这就是我计划做的:- 注册时,用户的公钥保存在网站中 当用户稍后尝试登录时,网站会要求用户提供相应的私钥 如果私钥与用户在注册时提供的公钥匹配,则对用户进行身份验证 我见过像startssl.com这样的网站要求用户的私钥来验证他们的身份(见所附的截图)。那么,实施这样一个系统需要什么呢 只是为了澄清流程 用户使用普通的旧用户名和密码对注册。他还被要求输入至少一个公钥(其他公钥可以稍后从配置文件管理面板添加) 服务器存储用

我正在尝试实现一个登录系统,使用公钥身份验证登录网站。我不确定这是否可行

这就是我计划做的:-

  • 注册时,用户的公钥保存在网站中
  • 当用户稍后尝试登录时,网站会要求用户提供相应的私钥
  • 如果私钥与用户在注册时提供的公钥匹配,则对用户进行身份验证
  • 我见过像startssl.com这样的网站要求用户的私钥来验证他们的身份(见所附的截图)。那么,实施这样一个系统需要什么呢


    只是为了澄清流程

  • 用户使用普通的旧用户名和密码对注册。他还被要求输入至少一个公钥(其他公钥可以稍后从配置文件管理面板添加)
  • 服务器存储用户的公钥,并将其与证书中的用户关联
  • 下一次客户机提出提交其证书的请求时(这应该由浏览器处理,因此对用户来说是透明的),服务器端的SSL引擎检查它是否知道客户端,如果知道,则请求将被处理,应用程序代码将对用户进行身份验证和授权,因为它知道公钥和用户之间的链接。如果客户端未被识别,服务器应重定向到某个页面以允许注册或手动登录(可能是添加新的公钥)

  • 但是,提供私钥的用户不正是违背了这个目的吗?在所有情况下,私钥都应保持私有。通常的做法是,网站使用用户公钥加密令牌,用户使用其私钥解密令牌并将其提供给网站。这似乎很简单:是的,私钥始终保持私钥。它不会发送到服务器。查看startssl.com如何要求用户在屏幕截图中使用私钥进行验证?我在找类似的东西。@Sparky不确定所附的图片是你的还是你在网上找到的,但无论在其中做了什么掩蔽都没有效果。你可以很容易地读懂字母/数字是什么。这是一个很好的教程,使用Apache和PHP作为服务器端技术。非常感谢@Raffaele,这正是我想要的。