【问题标题】:Secure communication between client and service客户端和服务之间的安全通信
【发布时间】:2016-11-26 22:32:21
【问题描述】:

我有一个场景,我有 2 个应用程序。

  1. 服务,提供一些数据
  2. UI 客户端,显示来自服务的数据

我希望服务和客户端之间的通信安全(加密)。

我应该使用什么? SSL 是用于此类用途的通用协议,还是我们通常使用其他协议?

【问题讨论】:

  • 服务和 UI 客户端是否通过网络进行通信?什么是威胁模型?旨在保护来自谁的通信的加密?
  • @duskwuff 是的,它通过网络。威胁模型是截获的数据。

标签: security ssl encryption


【解决方案1】:

假设您的服务正在公开您的前端正在调用的标准 REST API(或类似的):是的,SSL 是标准。它提供:

  • 机密性:数据在客户端和服务器之间加密,攻击者无法读取。通常使用RSA algorithm。

  • 完整性:攻击者无法篡改客户端和服务器之间发送的消息。通常使用HMAC

  • 实现
  • 身份验证:客户端能够检查它正在与之通信的服务器 确实是您的,而不是攻击者。基本上,服务器向客户端显示由颁发 SSL 证书(例如 VeriSign)的证书颁发机构签署的证书,以证明其身份。

所有假设 SSL 在服务器端正确配置:最新的密码、不支持过时的密码、适当的密钥长度(2048 位或更高)等。

请注意,客户端可以是调用您的服务的任何东西:基于浏览器的应用程序、移动应用程序、智能手表应用程序...

您可以使用SSL Labs 检查您的 SSL 配置是否安全。

【讨论】:

  • 您在谈论浏览器和服务之间的通信。但是,我说的是客户端应用程序本身和服务之间的通信。所以这里应该有两种类型的通信,对吧? 1) 浏览器到 UI Web 应用程序,以及 2) UI Web 应用程序到一些支持服务。我问的是保护通信 2)。
  • 抱歉,如果我的术语令人困惑。我已经编辑了我的答案以使其更清楚,但是是的,SSL 是任何类型的客户端调用您的服务的标准:浏览器应用程序、移动应用程序......或者即使“客户端”是另一个调用您的服务的服务。
  • 这是否意味着该服务将向 UI Web 应用程序颁发 SSL 证书?
  • 没有。证书颁发机构(例如 VeriSign)将给你(或者更确切地说,卖给你)一个证书,用它的私钥签名,证明你的服务器是域 your-service.com 的服务器。当客户端连接到您的服务时,服务器会将证书发送给他。客户端将能够验证证书,确保它正在与您的服务器而不是与攻击者通信。其中很多都是透明的,尤其是证书验证部分。
猜你喜欢
  • 2012-03-22
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
相关资源
最近更新 更多