【问题标题】:AWS authentication requires a valid Date or x-amz-date header curlAWS 身份验证需要有效的 Date 或 x-amz-date 标头 curl
【发布时间】:2021-06-07 07:48:20
【问题描述】:

我正在尝试通过传递 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 和标题中传递日期,但没有运气..请帮助..

【问题讨论】:

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


    【解决方案1】:

    解决了这个问题。结果表明 HTTP 标头需要采用 RFC 7231 格式。我格式化了它,它工作。,下面是我使用的格式,

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

    【讨论】:

    • 在阅读了十几个关于错误 Java / Joda 版本的其他 cmets 之后,这终于帮助了我。谢谢!
    【解决方案2】:

    有类似的问题,但得到:

    Date must be in ISO-8601 'basic format'

    我用这个来修复:

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

    【讨论】:

      猜你喜欢
      • 2015-11-10
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多