验证 Amazon SNS 消息签名 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

验证 Amazon SNS 消息签名

Amazon SNS 使用消息签名来确认发送到您的 HTTP 终端节点的消息的真实性。为确保消息完整性并防止欺骗,您必须在处理任何 Amazon SNS 消息之前验证签名。

什么时候应该验证 Amazon SNS 签名?

在以下情况下,您应该验证 Amazon SNS 消息签名:

  • 当 Amazon SNS 向您的 HTTP (S) 终端节点发送通知消息时。

  • 当 Amazon SNS 在SubscribeUnsubscribeAPI 调用后向您的终端节点发送确认消息时。

Amazon SNS 支持两个签名版本:

  • SignatureVersion1 — 使用 SHA1 消息的哈希值。

  • SignatureVersion2 — 使用 SHA256 消息的哈希值。这提供了更强的安全性,是推荐的选项。

要正确验证 SNS 消息签名,请遵循以下最佳实践:

  • 请务必使用 HTTPS 检索签名证书,以防止未经授权的拦截攻击。

  • 检查证书是否由 Amazon SNS 颁发。

  • 确认证书的信任链有效。

  • 证书应来自 SNS 签名的 URL。

  • 未经验证,请勿信任消息中提供的任何证书。

  • 拒绝任何带有意外消息的消息TopicArn,以防止欺骗。

  • Amazon SDKs 适用于 Amazon SNS 的提供了内置的验证逻辑,从而降低了错误实施的风险。