如何签署 API 提供的数据
How to sign data served by API
我通过私人 API 提供数据,我想签署它们。我的用户有点偏执,他们自己保存数据。他们想确保他们保存的数据来自我,并且没有被任何人修改过。我不能只使用 https,因为 Https 只是证明服务器的身份。他们想要确保数据没有改变,这还不够,即使是我也不应该改变它们。
这是我想做的。
- 使用 sha1 或其他方式构建数据块的校验和。
- 使用私有自签名证书构建此校验和的数字签名。
- 通过 https 提供校验和、签名和我的 public 密钥。
我的问题是:
- 这样做正确吗?
- 我应该为 Comodo 或 Symantec 等机构购买证书吗?
- 我可以使用我的 https 证书签署我的校验和吗?
- 如果我从权威机构购买证书,证书过期后会怎样?我的旧校验和签名不再有效了吗?
Build a checksum of a data chunck using sha1 or else.
Build a digital signature of this checksum usign a private self-sign certificate.
你应该在消息上做数字签名,而不是校验和(数字签名过程本身涉及消息的散列,但你不必关心这个)
您需要私钥和证书。您可以构建自己的 self-signed 证书或向证书颁发机构 (CA) 申请一个。
- serve through https the checksum, its signature, and my public key.
您需要发送签名,而不是校验和。确实不需要 https 来发送签名(但推荐),因为数字签名保护消息的内容并识别签名者
客户端应将您的签名证书的根证书包含在他的信任库中,以便能够验证签名。您可以离线提供或通过 https 提供。
Should I buy a certificate for an authority like Comodo or Symantec ?
客户端必须信任您的根证书,并将其包含在他的信任库中(如上所述)。受信任的 CA 的优点是通常根证书默认存在于客户端 trustore 中,您不需要导入它。但是如果你生成一个self-signed证书并且你提供public部分给客户,他可以手动导入。
Can I sign my checksum using my https certificate ?
否,https 证书必须用于 SSL 连接并且具有特定的密钥用法。根据您的客户端使用的软件,可以拒绝签名
If I buy a certificate from an authority what happened when it expires ? Are my old checksum signature not valid anymore ?
默认情况下,在证书到期日期 之后执行的数字签名验证将失败。如果您的客户想要这样做,那么客户或您必须使用时间戳(由第三方时间戳机构颁发)来保护签名。当时间戳的证书接近过期时,可以添加其他时间戳
我通过私人 API 提供数据,我想签署它们。我的用户有点偏执,他们自己保存数据。他们想确保他们保存的数据来自我,并且没有被任何人修改过。我不能只使用 https,因为 Https 只是证明服务器的身份。他们想要确保数据没有改变,这还不够,即使是我也不应该改变它们。
这是我想做的。
- 使用 sha1 或其他方式构建数据块的校验和。
- 使用私有自签名证书构建此校验和的数字签名。
- 通过 https 提供校验和、签名和我的 public 密钥。
我的问题是:
- 这样做正确吗?
- 我应该为 Comodo 或 Symantec 等机构购买证书吗?
- 我可以使用我的 https 证书签署我的校验和吗?
- 如果我从权威机构购买证书,证书过期后会怎样?我的旧校验和签名不再有效了吗?
Build a checksum of a data chunck using sha1 or else.
Build a digital signature of this checksum usign a private self-sign certificate.
你应该在消息上做数字签名,而不是校验和(数字签名过程本身涉及消息的散列,但你不必关心这个)
您需要私钥和证书。您可以构建自己的 self-signed 证书或向证书颁发机构 (CA) 申请一个。
- serve through https the checksum, its signature, and my public key.
您需要发送签名,而不是校验和。确实不需要 https 来发送签名(但推荐),因为数字签名保护消息的内容并识别签名者
客户端应将您的签名证书的根证书包含在他的信任库中,以便能够验证签名。您可以离线提供或通过 https 提供。
Should I buy a certificate for an authority like Comodo or Symantec ?
客户端必须信任您的根证书,并将其包含在他的信任库中(如上所述)。受信任的 CA 的优点是通常根证书默认存在于客户端 trustore 中,您不需要导入它。但是如果你生成一个self-signed证书并且你提供public部分给客户,他可以手动导入。
Can I sign my checksum using my https certificate ?
否,https 证书必须用于 SSL 连接并且具有特定的密钥用法。根据您的客户端使用的软件,可以拒绝签名
If I buy a certificate from an authority what happened when it expires ? Are my old checksum signature not valid anymore ?
默认情况下,在证书到期日期 之后执行的数字签名验证将失败。如果您的客户想要这样做,那么客户或您必须使用时间戳(由第三方时间戳机构颁发)来保护签名。当时间戳的证书接近过期时,可以添加其他时间戳