Как создать подпись HMAC, необходимую для отправки электронных писем Amazon SES через HTTP? - PullRequest
3 голосов
/ 21 марта 2012

Я использую 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 .

1 Ответ

4 голосов
/ 21 марта 2012

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

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

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

Включая код для расчета HMAC.

...