Amazon SQS SIgnature错误

时间:2012-12-26 08:13:34

标签: amazon-web-services amazon-s3 amazon-sqs

我用来签名的字符串如下

GET
sqs.us-east-1.amazonaws.com
/XXXXXXXXXXX/Localhost
AWSAccessKeyId=XXXXXNGOTNJCTGAXXXXX&Action=ReceiveMessage&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-12-26T07%3A56%3A37Z&Version=2012-11-05

在前三行之后有'\ n'个字符,但是在最后一行之后没有,我也在最后尝试了'\ n',但结果是相同的

我是他们在计算

HMAC_SHA256(AWSKey,string) 

我已经单独验证了HMAC_SHA256的正确性, 最后,我使用HMAC Base 64编码调用URL

https://sqs.us-east-1.amazonaws.com/XXXXXXXXXXX/Localhost?AWSAccessKeyId=XXXXXNGOTNJCTGAXXXXX&Action=ReceiveMessage&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2012-12-26T07%3A56%3A38Z&Version=2012-11-05&Signature=06nzru1EroDLJTJDjExLbyUyQzEcct3wAp%2Bm7TOBTjb0aPWSJTIXXXXX

我已经添加了XX..XX。

在完成文档后,几次,我没有找到相同的错误,但我收到的签名没有匹配错误。

<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
</Message>

1 个答案:

答案 0 :(得分:0)

问题可能是URL中查询字符串开头的队列名称和问号之间的斜杠吗?我不认为应该在那里。

...Localhost/?AWSAccessKeyId...
            ^ remove this

嗯,不是吗,嗯?好的,这是另一个想法:

您说您验证了HMAC_SHA256的正确性,但是您确定这是参数的正确顺序吗?一些实现使用此约定:

HMAC_SHA256($data,$key)

你正在做相反的事情。