0

我将向您展示我的签名请求。

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 的服务器端的错误吗?

4

1 回答 1

1

It looks like you did some urlencoding, but you missed one thing... the value for the signature.

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

If you urlencode this value, that should be what you are missing. Having any of =+/ unencoded in the signature will break it.

于 2014-06-11T10:07:38.210 回答