错误:签名仅在EC2 API请求中匹配一次

时间:2014-06-11 04:56:59

标签: rest amazon-web-services amazon-ec2 amazon ec2-api-tools

我会告诉你我的签名请求。

https://ec2.eu-west-1.amazonaws.com?AWSAccessKeyId=THISISFAKEIDD
&Action=AuthorizeSecurityGroupIngress
&GroupId=sg-blahblah
&IpPermissions.1.FromPort=7264
&IpPermissions.1.IpProtocol=ani
&IpPermissions.1.IpRanges.1.CidrIp=272.64.292.200%2F32
&IpPermissions.1.ToPort=7264
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2014-06-10T05%3A25%3A10Z
&Version=2014-05-01
&Signature=FZgxzY0htCocacolaX4PXf0uJjnwmayhemDavkwCUw=

生成签名&此请求能够将我的IP地址(272.64.292.200)成功添加到安全组(sg-blahblah)中。这意味着,这个要求是正确的。我的代码中没有生成签名的错误。

行。现在,当我尝试使用具有不同IP地址参数的相同签名请求向同一组添加另一个IP地址时。时间戳,生成新签名。但我无法将其添加到安全组。签名不符合。显示的计算签名不匹配。

为什么会这样?我使用UTC时间。如果我的请求不正确,我怎么能在第一个地方添加IP地址?或者,它是来自EC2服务器端的错误??

1 个答案:

答案 0 :(得分:1)

看起来你做了一些urlencoding,但是你错过了一件事...签名的价值。

&Signature=FZgxzY0htCocacolaX4PXf0uJjnwmayhemDavkwCUw=   (incorrect)
&Signature=FZgxzY0htCocacolaX4PXf0uJjnwmayhemDavkwCUw%3D (correct)

如果你对这个值进行了urlencode,那就应该是你所缺少的。在签名中任何=+/未编码都会破坏它。