如何将私钥从服务器传送到客户端安全? [爪哇]

问题描述

我想为服务器上的客户端生成一个 SSH 密钥对。

我之前的设计是使用rest API将post请求(或者我应该使用get?)发送到后端,然后生成密钥对并将其返回给前端。然后为下载的私钥文件创建 URL。

但似乎以这种方式可能会导致一些安全问题。我对安全不熟悉,所以我实际上不知道可能会导致什么安全问题,以及会在哪里发生。

我希望我能对解决方案有所了解,任何建议或解释都会有所帮助。 谢谢!

解决方法

你不能这样做,除非......

  • 您已经拥有发送私钥的安全通道,或者
  • 客户端和服务器已经拥有可用于创建此类通道的共享密钥或密钥对。

但好消息是,如果您的服务器实现了 HTTPS(或类似的基于 SSL 的协议)并且具有正确的 SSL 证书和正确的根 CA,那么由客户端创建到 HTTPS 端点的通道应该是安全的。然后,您只需要一种服务器对客户端进行身份验证的方法;例如帐户名 + 密码或客户端证书。 (但这意味着一个共享秘密......用于向服务器验证客户端。)

一般来说,解决方案涉及某种引导,从“带外”注入的共享秘密开始;例如在启动映像、首次启动注入或 U 盘中。

注意这种事情真的应该由懂安全的人来设置,因为如果你弄错了,造成的损失是无法估量的。

所以……

我想为服务器上的客户端生成一个 SSH 密钥对。

简单的答案是不要那样做。反过来实施它。在客户端生成密钥对并将公钥发送给服务器。