Amazon SES 535身份验证凭据尝试旋转访问密钥无效

问题描述 投票:11回答:2

我们有一个运行良好的亚马逊SES设置,每天通过SMTP发送数千封电子邮件。尝试遵循“旋转”访问键的最佳实践,我们前往https://console.aws.amazon.com/iam/home并为用于发送电子邮件的完全相同的用户创建新的访问密钥。新密钥据称是活跃的,但在尝试使用访问密钥发送电子邮件时,我们会继续使用

535 Authentication Credentials Invalid

切换到旧的访问密钥很有效,并且会发送电子邮件。尝试了几次删除新的访问密钥并创建其他密钥。同一台机器,相同的软件。我们拥有适当的复制+粘贴技能,以确保我们使用来自亚马逊的CSV中提供的相同ID /密码。来自亚马逊的对话:Menu on IAM

发生什么了?在新密钥激活之前是否有时间限制?某处有其他隐藏的限制吗?

amazon-web-services email aws-cli amazon-ses
2个回答
9
投票

您将SMTP凭据与access_keysecret混淆。它们是不同的。

  • access_key / secret - >在SDK和CLI中使用
  • SMTP凭据 - >用于配置SES SMTP
  • 您正在创建新的access_key / secret并将其用作SMTP凭据
  • 而是创建一个新的SMTP凭据并使用它
  • 密钥轮换与SMTP凭据轮换不同
  • 无需创建新用户

即使您生成另一组access_key/secret,您可能正在使用不会更改的SMTP凭据。在您的情况下,您似乎使用的是SMTP服务器,而不是SDK。因此,生成一组新的access_key/secret对SMTP凭据没有影响。

如果要创建一组新的SMTP凭据,请转至AWS SES仪表板并创建SMTP凭据。

enter image description here

有关更多信息:Obtaining Your Amazon SES SMTP Credentials


4
投票

是的,AWS接近SES的SMTP密码的方式存在隐藏的限制。他们正在使用一种非常混乱的方式处理这些凭据。

answer from helloV在正确的轨道上,但它并不完全正确。 AWS和他的回答都告诉我们Access_key / Secret_key和SES SMTP凭据是不同的东西,但是:

  • 如果您创建新的SES SMTP凭据,它将创建一个具有访问密钥/密钥对的新IAM用户
  • 访问密钥ID与SMTP的用户名相同
  • 如果删除或禁用此密钥,则会丢失SMTP访问权限。所以他们显然非常相关。
  • SMTP的密码来自密钥

事实证明,现有IAM用户上的新access_key / secret_key对可用于SMTP,因此可以在不创建新用户的情况下轮换密钥。 AWS将秘密访问密钥转换为生成SMTP密码,如this documentation page中所述:

以下伪代码显示将AWS秘密访问密钥转换为Amazon SES SMTP密码的算法。

key = AWS Secret Access Key;
message = "SendRawEmail";
versionInBytes = 0x02;
signatureInBytes = HmacSha256(message, key);
signatureAndVer = Concatenate(versionInBytes, signatureInBytes);
smtpPassword = Base64(signatureAndVer);

因此,使用Secret Access密钥,可以生成SMTP密码 安装了bash和openssl后,以下命令将输出用于SMTP的密码:

(echo -en "\x02"; echo -n 'SendRawEmail' \
  | openssl dgst -sha256 -hmac $AWS_SECRET_ACCESS_KEY -binary) \
  | openssl enc -base64

只需用您的密钥替换$ AWS_SECRET_ACCESS_KEY,或预先设置变量

© www.soinside.com 2019 - 2024. All rights reserved.