Amazon SES 535 身份验证凭证尝试轮换访问密钥无效

Amazon SES 535 Authentication Credentials Invalid trying to rotate access key

我们有一个运行良好的 Amazon SES 设置,每天通过 SMTP 发送数千封电子邮件。尝试遵循我们访问的 "rotating" 访问密钥的最佳实践 https://console.aws.amazon.com/iam/home 并为用于发送电子邮件的完全相同的用户创建新的访问密钥。新密钥应该是活动的,但是当尝试使用访问密钥发送电子邮件时,我们不断收到

535 Authentication Credentials Invalid

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

所以这是怎么回事?新密钥激活之前是否有时间限制?是否还有其他隐藏的限制?

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

  • access_key/secret --> 在SDK和CLI中使用
  • SMTP 凭据 --> 用于配置 SES SMTP

  • 您正在创建一个新的 access_key/secret 并将其用作 SMTP 凭据

  • 相反,您创建一个新的 SMTP 凭据并使用它
  • 密钥轮换不同于 SMTP 凭据轮换
  • 无需创建新用户

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

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

更多信息:Obtaining Your Amazon SES SMTP Credentials

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

的方向是正确的,但并不完全正确。 AWS 和他的回答都告诉我们 Access_key/Secret_key 和 SES SMTP 凭证是不同的东西,但是:

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

事实证明,现有 IAM 用户上的新 access_key/secret_key 对可用于 SMTP,因此无需创建新用户即可轮换密钥。 AWS 转换秘密访问密钥以生成 SMTP 密码,正如他们在 this documentation page:

中解释的那样

The following pseudocode shows the algorithm that converts an AWS Secret Access Key to an Amazon SES SMTP password.

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

所以使用Secret Access key,可以生成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 替换为您的密钥,或预先设置变量

由于Secret Key和SMTP Password的格式不同,您需要使用AWS提供的算法将Secret Key转换为SMTP Password

您可以在这里找到它: https://aws.amazon.com/premiumsupport/knowledge-center/ses-rotate-smtp-access-keys/