

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

# 验证 Amazon SNS 消息签名
<a name="sns-verify-signature-of-message"></a>

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

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

在以下情况下，您应该验证 Amazon SNS 消息签名：
+ Amazon SNS 将通知消息发送到您的 HTTP(S) 端点时。
+ 当 Amazon SNS 在 [https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html) 或 [https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html) API 调用后向您的端点发送确认消息时。

**Amazon SNS 支持两种消息签名版本：**
+ SignatureVersion1-使用消息的SHA1哈希值。
+ SignatureVersion2-使用消息的SHA256哈希值。这提供了更强的安全性，推荐使用该选项。

**要正确验证 SNS 消息签名，请遵循以下最佳实践：**
+ 请务必使用 HTTPS 检索签名证书，以防止未经授权的拦截攻击。
+ 检查证书是否由 Amazon SNS 签发。
+ 确认证书的信任链有效。
+ 证书应来自 SNS 签名的 URL。
+ 未经验证，请勿信任消息中提供的任何证书。
+ 拒绝任何带有意外 `TopicArn` 的消息，以防止欺骗。
+  AWS SDKs 适用于 Amazon SNS 的提供了内置的验证逻辑，从而降低了错误实施的风险。