1

假设我可以访问 https 天气 API。假设我在 2017 年 8 月 17 日星期四 23:30 查询了它的健康状态,API 回复 OK(简单的 OK http 代码)。

作为客户,我需要在未来证明该服务确实响应了我这些数据。

我正在考虑要求 API 添加已发送数据的加密签名 + 时间戳,以证明他们在该特定时间确实响应正常。是不是矫枉过正?有没有更简单的方法呢?

4

1 回答 1

2

包含当前日期/时间的数字签名,甚至添加由第三方时间戳权威发布的时间戳,是确保内容实际发布于某个日期的适当方式

一般来说,在 HTTP 请求上实现数字签名系统并不是那么简单,您必须考虑许多因素:

  • 您将签署哪些内容:标头、有效负载、附件?

  • 它是二进制内容还是文本?因为算法和签名格式会不同

  • 如果是文本,您必须规范化内容以避免在客户端验证签名时出现编码问题。您还需要定义一个签名算法来计算要签名的内容

  • 当通过流发送附件时,您是否还需要对其进行签名?你将如何处理大文件?

  • 您将如何将签名附加到 https 响应:特殊标头,有效负载中的附加属性?

  • 服务器将如何分发签名证书?您应该将其包含在客户端的信任库中

但是,如果您只想证明服务响应是 OK/FAIL,那么服务器只需要在有效负载上添加数字签名(或根据标头的串联计算)但是如果您想实现更复杂的东西我建议你看看Json Web Signature (JWS)

于 2017-08-17T13:09:04.400 回答