AWS 身份验证需要有效日期或 x-amz-date header curl

AWS authentication requires a valid Date or x-amz-date header curl

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

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

下面是授权header我路过..

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 和 header 中传递日期,但没有成功..请帮忙..

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

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

有类似的问题但得到:

Date must be in ISO-8601 'basic format'

我用它来修复:

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