【发布时间】:2021-02-09 22:43:29
【问题描述】:
我想在服务器上为客户端生成一个 SSH 密钥对。
我之前的设计是使用rest API将post请求(或者我应该使用get?)发送到后端,然后生成密钥对并将其返回给前端。然后为下载的私钥文件创建 URL。
但似乎以这种方式可能会导致一些安全问题。我对安全不熟悉,所以我实际上不知道安全问题可能导致什么,以及它会发生在哪里。
我希望我能对解决方案有所了解,任何建议或解释都会有所帮助。 谢谢!
【问题讨论】:
我想在服务器上为客户端生成一个 SSH 密钥对。
我之前的设计是使用rest API将post请求(或者我应该使用get?)发送到后端,然后生成密钥对并将其返回给前端。然后为下载的私钥文件创建 URL。
但似乎以这种方式可能会导致一些安全问题。我对安全不熟悉,所以我实际上不知道安全问题可能导致什么,以及它会发生在哪里。
我希望我能对解决方案有所了解,任何建议或解释都会有所帮助。 谢谢!
【问题讨论】:
你不能这样做,除非......
但好消息是,如果您的服务器实现了 HTTPS(或类似的基于 SSL 的协议)并且具有适当的 SSL 证书和适当的根 CA,那么客户端创建的到 HTTPS 端点的通道应该是安全的。然后,您需要的只是一种服务器对客户端进行身份验证的方法;例如帐户名 + 密码或客户端证书。 (但这意味着一个共享的秘密......用于向服务器验证客户端。)
一般来说,对此的解决方案涉及某种引导,从“带外”注入的共享密钥开始;例如在启动映像、首次启动注入或 U 盘中。
请注意,这种事情真的应该由懂安全的人来设置,因为如果你弄错了,造成的损失可能无法估量。
所以...
我想在服务器上为客户端生成一个 SSH 密钥对。
简单的答案是不要那样做。反过来实现它。在客户端生成密钥对并将公钥发送到服务器。
【讨论】: