【问题标题】:Is REST API over SSH possible?是否可以通过 SSH 实现 REST API?
【发布时间】:2018-02-04 10:39:12
【问题描述】:

我正在为物联网设备和客户端之间的机密通信设计一个 API。必须确保客户端与设备之间的连接是安全,并且没有中间人可以削弱通信或攻击设备,包括路由服务器。

网络图如下:

  • IoT 设备始终位于同一网络后面的家中。
  • 客户端设备是移动的并且会改变网络
  • 客户端不断连接和断开 IoT 设备

客户端必须能够通过在每个 IoT 设备上运行的 API 服务器在 IoT 设备上执行命令。路由服务器仅对请求进行隧道传输,但不得信任

我的问题是:

我应该使用什么协议来实现这个方案?

我对 SSH 有点困惑。 它似乎非常适合安全客户端 通过隧道进行 IoT 设备通信。

但是是否可以使用 SSH 创建 RESTful API?

我不需要直接访问设备的外壳,我需要一个抽象层,由在 IoT 设备上运行的 API 提供。

如果 SSH 不是一个选项,我能否以任何其他方式从 客户端 安全地路由请求并在 IoT 设备上执行命令?

【问题讨论】:

  • 大多数人会在这里使用 HTTPS。
  • SSH 和 REST 是正交的。 SSH 承载流量,REST 只是定义流量的样子。
  • 我真正的困境是我应该在物联网设备上运行经典的 HTTPS 服务器,创建具有强身份验证的 REST API 并让客户端通过它执行命令,还是应该在 SSH 之上开发一些东西。目标是让远程客户端安全地在设备上执行某些命令。 SSH 不是出于这个原因吗?但是,客户端不能在他们的智能手机上看到远程外壳,而是一个漂亮的 GUI
  • 您是否意识到使用这两种方法最终用户都需要在其防火墙上打开端口才能允许连接?
  • 物联网设备自动连接隧道服务器。我考虑使用 Ngrok 链接。两边都不需要转发端口

标签: security networking ssh iot


【解决方案1】:

这样做的方法就是使用 HTTPS 和证书固定(这与 SSH 在后台所做的非常相似)。

在第一次向 IoT 设备发出请求时,用户在确认它是正确的之后固定设备的证书。

获得证书后,我们只需通过不安全的代理公开 REST API。此后一切都由 TLS 协议自动处理。

安全保证与 SSH 协议相同。

【讨论】:

    【解决方案2】:

    Rest API 旨在在 HTTP 协议下进行交互。 SSH 协议与 HTTP 完全不同。

    因为方法调用方式不同。

    您可以使用 HTTPS 实现加密,您仍然可以将身份验证绑定到操作系统 (pam)。

    否则,您可以使 SSH 隧道主机到主机并进行 HTTP 调用。 (当然,您可以自动化所有流程)

    【讨论】:

      猜你喜欢
      • 2016-06-02
      • 1970-01-01
      • 2011-06-08
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多