【问题标题】:Status Code 403: SignatureDoesNotMatch when I am using Amazon SES状态码 403:我使用 Amazon SES 时的 SignatureDoesNotMatch
【发布时间】:2013-01-12 19:18:05
【问题描述】:

我创建了一个新的亚马逊帐户。创建 SMTP 凭证并使用 AWS Java SDK 发送电子邮件。但它失败并出现以下错误:

状态代码:403,AWS 服务:AmazonSimpleEmailService,AWS 请求 ID:xyz,AWS 错误代码:SignatureDoesNotMatch,AWS 错误消息:The 我们计算的请求签名与您的签名不匹配 假如。检查您的 AWS 秘密访问密钥和签名方法。咨询 有关详细信息,请参阅服务文档。

【问题讨论】:

标签: amazon-web-services amazon-ses


【解决方案1】:

用于发送电子邮件的密钥不是“SMTP 凭据”。这些密钥是可以检索的全局访问密钥http://docs.amazonwebservices.com/ses/latest/GettingStartedGuide/GetAccessIDs.html。

【讨论】:

  • 我会被诅咒的,但这是真的。您需要为 AWS 创建一个全局访问密钥才能访问 SES。使用 URL console.aws.amazon.com/iam/home?#security_credential 请注意,这为密钥提供了对 AWS 账户的无限制访问权限。不明白为什么 SES 不能使用更有限的一组凭据...
  • 最佳实践是创建一个 IAM 用户,然后为该用户创建一个访问 ID。您现在可以限制用户权限。所有这些操作都必须在 AIM 控制面板中完成:console.aws.amazon.com/iam/home
  • 上面的答案是正确的,对我有用。我只需要注意一个问题,不知何故,当您通过 csv 格式下载凭据时,它们不起作用,因此请从 aws 控制台本身复制,而不是下载 csv 并从那里复制。
【解决方案2】:

SMTP 凭证不适用于 SES API(AWS Java SDK)。 SMTP 凭证实际上不同于为 IAM 用户手动创建的凭证,即使这种不同在 AWS 控制台的任何地方都不可见。看看这里看看不同之处:http://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-credentials.html

您实际上不需要创建全局访问凭证(这可能是安全漏洞),但您应该使用以下安全策略创建一个新的 IAM 用户,并为该用户创建新的凭证。

{
"Version": "2012-10-17",
"Statement":[{
   "Effect":"Allow",
   "Action":["ses:SendEmail", "ses:SendRawEmail"],
   "Resource":"*"
   }
]
}

PS:也许,您可以向已为 SES 创建的 SMTP IAM 用户添加新凭证,但我尚未对此进行测试。

【讨论】:

  • 该策略运行良好,但我必须创建另一个凭据才能使用它。
猜你喜欢
  • 2017-01-19
  • 2014-04-22
  • 2017-10-27
  • 2018-06-14
  • 2019-11-18
  • 2011-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多