gpt4 book ai didi

java - 在 Java SSL 中处理密码更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:01 24 4
gpt4 key购买 nike

我有一个客户端-服务器 java 应用程序,其中通过 SSL 进行通信。现在我正在手动生成 key 对,但我需要一个用于 key 管理的编程系统。

服务器维护一个用户数据库,在客户端我不想存储密码的副本。客户端将以某种方式使用密码登录到服务器。如果密码正确,服务器和客户端将设置 key 。从那时起,他们可以使用这些 key 而不必使用密码。这引出了我的第一个问题:

  • 当用户第一次输入密码时,我如何加密该传输?因为此时没有 key ,因此没有 SSL。

然后是用户更改密码的问题。这个想法是他们将通过一个网络界面来更改他们在服务器上的密码。然后下次客户端连接时,他们的旧 key 应该不起作用,他们应该被要求输入新密码。这引出了我的下一个问题:

  • 最佳实践是什么处理密码更改时处理 SSL?

我可以在他们更改密码时删除服务器端 key 。然后客户端将无法通信,然后我可以让客户端要求一个新密码。但这似乎有点困惑。

最佳答案

虽然 SSL 连接可以使用客户端证书对客户端进行身份验证,但它通常仅用于对服务器进行身份验证,并在已识别的身份之间创建加密连接服务器(凭借绑定(bind)到域名的证书)和匿名客户端。

要使用客户端证书,客户端 必须生成 PKCS key 对,一个证书签名请求,并由服务器信任的权威机构签名。如果没有这个过程,客户端的身份验证通常是通过 SSL 之上的协议(protocol)完成的,这需要一些只有客户端知道的 secret 。这通常是一个密码,例如一个好的网站登录名。

相反,您所描述的实际上是机器生成的临时(凭空)密码(这些通常称为“ key ” ",但重要的是您要了解它实际上只是一个特殊密码)。也就是说,在使用用户键入的密码对初始连接进行身份验证后,您向客户端发送一个临时密码以存储并用于后续连接。

要处理密码更改,您只需更改协议(protocol)以允许使用临时密码。如果它不正确但服务器有一个,您可能想锁定该帐户,假设是黑客尝试(尽管这可能是 DoS 开放)。否则,如果由于服务器没有临时 key 而不正确(即服务器端由于密码已更改而将其空白),那么您只需向客户端发送响应以向用户询问当前密码。然后用户输入密码,如果密码匹配,服务器会生成并传输一个新的临时密码。

编辑:澄清一下,即使您正在生成 PKCS key 对,但没有执行该客户端并将它们绑定(bind)到证书中,这也不是客户端证书身份验证。它只是一个加密强度高的机器生成的临时密码

请注意,在一天结束时,您的系统的强度取决于导致 key 对生成(或随后被替换)的初始密码。

关于java - 在 Java SSL 中处理密码更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5759065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com