2014-06-11 8 views
0

서명 요청을 표시합니다.오류 : EC2 API 요청에서 서명이 한 번만 일치합니다.

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= 

서명이 요청이 성공적으로 보안 그룹 (SG-blahblah)로 내 IP 주소 (272.64.292.200)를 추가 할 수 있었다 & 생성되었습니다. 즉,이 요청은 정확합니다. & 서명을 생성하는 코드에 오류가 없습니다.

확인. 이제 다른 IP 주소를 다른 IP 주소 매개 변수 & 타임 스탬프로 동일한 서명 요청을 사용하여 같은 그룹에 추가하려고하면 새 서명이 생성됩니다. 하지만 보안 그룹에 추가 할 수는 없습니다. 서명이 일치하지 않습니다. 계산 된 서명이 일치하지 않습니다.

왜 그렇게 되나요 ?? 나는 UTC 시간을 사용한다. 내 요청이 올바르지 않은 경우 어떻게 IP 주소를 추가 할 수 있었습니까? 또는 EC2의 서버 측에서 오류가 있습니까 ??

+0

때때로 서명에 URL 인코딩이 필요한 문자가 있음에 유의하십시오. 그러면 일부 요청이 작동하고 일부 요청은 작동하지 않을 수 있습니다. – BraveNewCurrency

+0

어떤 문자를 인코딩해야합니까 ??? 나는 URL 인코딩을했다고 생각한다. @BraveNewCurrency –

+1

URL 인코딩이 올바르지 않습니다. 쿼리 매개 변수에 "/"및 ":"을 인코딩합니다 (필요 없음). 때로는 서명의 끝에있는 "="을 인코딩해야합니다 (표준이 아니라고하더라도). http://blog.lunatech.com/2009/02/03/what-every-web-developer-must-know-about-url-encoding – BraveNewCurrency

답변

1

당신은 urlencoding을 한 것처럼 보였지만 한 가지를 놓쳤습니다 ... 서명의 가치.

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

이 값을 urlencode하면 누락 된 값이어야합니다. =+/ 중 하나가 서명에 인코딩되지 않은 상태이면 서명이 깨집니다.