AWS身份验证需要有效的Date或x-amz-date标头curl

时间:2015-03-26 10:52:01

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

我正在尝试通过传递AWS请求的所需标头来使用cURL进行简单的图片上传,但我收到以下错误...

<Code>AccessDenied</Code><Message>AWS authentication requires a valid Date or x-amz-date header</Message>

以下是我传递的授权标题..

curl -X PUT -T "/some/file.jpg" \
-H "Host: bucket.s3.amazonaws.com" \
-H "Date: date" \
-H "Content-Type: image/jpg" \
-H "Authorization: AWS XXXXXXX:XXXXXXXXXX" \
  https://bucket.s3.amazonaws.com/

及以下是签名的制作方式,

signature=`echo -en ${stringToSign} | openssl sha1 -hmac ${s3Secret} -binary | base64`

我已尝试在stringToSign和标题中传递日期,但没有运气..请帮助..

2 个答案:

答案 0 :(得分:4)

修复了问题..原来HTTP标头需要采用RFC 7231格式。我格式化它,它工作。,下面是我使用的格式,

date -jnu +%a,\ %d\ %h\ %Y\ %T\ %Z

答案 1 :(得分:0)

有类似的问题,但得到:

Date must be in ISO-8601 'basic format'

我用它来修复:

$(date -u +"%Y-%m-%dT%H:%M:%S%z")