2012-03-21 4 views
3

Я использую Amazon SES, чтобы попытаться отправить электронную почту через HTTP Post, такие как:Как создать подпись HMAC, необходимую для отправки электронной почты Amazon SES через HTTP?

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-авторизации, который состоит из:

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

Мне было интересно, как рассчитать подпись? Это просто мой секретный ключ доступа?

A показано здесь, на Amazon Documentation Site.

ответ

4

НЕТ - Ваш секретный ключ доступа является секретным по причине. Никогда не пропускайте его по проводу или вы не дадите никому, кто нюхает его полный доступ к вашей учетной записи AWS - они могут использовать его, чтобы отключить все ваши ощущения, удалить все S3 Buckets - все.

Подпись - это «Подписанный запрос». вы принимаете содержимое запроса и создаете хэш хеширования с ключом для хэширования сообщений (HMAC), используя свой секрет в качестве хеш-ключа. Поскольку ваш секретный ключ известен только вам и Amazon, когда amazon получает запрос, они также будут принимать содержимое вашего запроса и хешировать его на основе вашего секретного ключа - если они получают тот же хеш, что и ваш подписанный запрос, тогда они знают запрос не подделано. Если они отличаются друг от друга, запрос может быть подвергнут злонамеренному подделке или скомпрометированному, поэтому они отклонят его.

Подробнее здесь: https://www.jokecamp.com/blog/examples-of-creating-base64-hashes-using-hmac-sha256-in-different-languages/

Включая код для вычисления HMAC.