3

我正在使用 Amazon SES 尝试通过 HTTP Post 发送电子邮件,例如:

https://email.us-east-1.amazonaws.com/?Action=SendEmail&Source=user%40example.com&Destination.ToAddresses.member.1=allan%40example.com&Message.Subject.Data=This%20is%20the%20subject%20line.&Message.Body.Text.Data=Hello.%20I%20hope%20you%20are%20having%20a%20good%20day.

但是在 HTTP 标头中,它要求 X-Amzn-Authorization 包括:

X-Amzn-Authorization: AWS3-HTTPS AWSAccessKeyId=<Your AWS Access Key ID>, Algorithm=HmacSHA256, Signature=<Signature>

我想知道如何计算签名?它只是我的秘密访问密钥吗?

此处显示在Amazon 文档站点上。

4

1 回答 1

4

否 - 您的秘密访问密钥是秘密的,这是有原因的。永远不要通过网络传递它,否则你会让任何嗅到它的人完全访问你的 AWS 账户——他们可以用它来关闭你所有的实例,删除整个 S3 存储桶——一切。

签名是“签名请求”。您获取请求的内容并使用您的秘密作为哈希密钥创建消息验证码 (HMAC) 哈希的密钥哈希。由于您的密钥只有您和亚马逊知道,当亚马逊收到请求时,他们还将获取您的请求内容并根据您的密钥对其进行哈希处理 - 如果他们获得与您签名的请求相同的哈希值,那么他们知道该请求没有被篡改。如果它们不同,则请求可能已被恶意篡改或破坏,因此他们将拒绝它。

更多细节在这里: https ://www.jokecamp.com/blog/examples-of-creating-base64-hashes-using-hmac-sha256-in-different-languages/

包括用于计算 HMAC 的代码。

于 2012-03-21T10:57:36.790 回答