2013-10-06 81 views
0

我在做EC2 API查詢並面臨錯誤「我們計算的請求籤名與您提供的簽名不匹配。API查詢結果錯誤「我們計算的請求籤名與您提供的簽名不匹配」

事實是,我照顧了EC2文檔(SignatureVersion 2)中的所有內容,但仍然面臨着這個錯誤,無法找出問題所在。

以下是詳細說明:

1)登入字符串:

s="""GET\n 
ec2.amazonaws.com\n 
/\n 
AWSAccessKeyId=access_id&Action=DescribeSecurityGroups&SignatureMethod=HmacSHA256 
&SignatureVersion=2&Timestamp=2013-10-06T14%3A15%3A30&Version=2013-08-15""" 

2)Python代碼,以生成簽名:

#!/bin/env python2.7 

import hmac 
import hashlib 
import base64 

s="""GET\n 
ec2.amazonaws.com\n 
/\n 
AWSAccessKeyId=acces_id&Action=DescribeSecurityGroups& 
SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-10- 
06T14%3A15%3A30&Version=2013-08-15""" 

signature=base64.b64encode(hmac.new("secret_key_id", msg=s, 
digestmod=hashlib.sha256).digest()) 
print(signature) 

3)瀏覽器請求:

https://ec2.amazonaws.com/?AWSAccessKeyId=access_id&Action=DescribeSecurityGroups&SignatureMethod=HmacSHA256&SignatureVersion=2&Timestamp=2013-10-06T14%3A15%3A30&Version=2013-08-15&Signature=cccccccccccccccccc

感謝

回答

1

你需要URL編碼基64字符串:

>>> import urllib 
>>> urllib.quote('4kvPV1bHGaayNg4u6OfiQh6U5IcI8wiJY+YBZddkI0c=') 
'4kvPV1bHGaayNg4u6OfiQh6U5IcI8wiJY%2BYBZddkI0c%3D' 
+0

OK做出建議changes..but相同的結果。我們是否需要url編碼secret_key? – Rahul

+0

@Rahul:可能。 – Blender

+0

結果沒有變化..(在我的secret_key中將'+'更改爲%20B)。不知道這裏有什麼問題。 – Rahul

相關問題