加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用bash从S3下载私有文件

发布时间:2020-12-15 19:02:51 所属栏目:安全 来源:网络整理
导读:我试图让以下bash脚本工作(从 http://curl.haxx.se/mail/archive-2014-10/0006.html#replies复制): #!/bin/sh file=path/to/file bucket=your-bucket resource="/${bucket}/${file}" contentType="application/x-compressed-tar" dateValue="`date +'%a,%d
我试图让以下bash脚本工作(从 http://curl.haxx.se/mail/archive-2014-10/0006.html#replies复制):
#!/bin/sh 
file=path/to/file 
bucket=your-bucket 
resource="/${bucket}/${file}" 
contentType="application/x-compressed-tar" 
dateValue="`date +'%a,%d %b %Y %H:%M:%S %z'`" 
stringToSign="GET 
${contentType} 
${dateValue} 
${resource}" 
s3Key=xxxxxxxxxxxxxxxxxxxx 
s3Secret=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
signature=`/bin/echo -n "$stringToSign" | openssl sha1 -hmac ${s3Secret} -binary |      base64` 
curl -H "Host: ${bucket}.s3.amazonaws.com" 
-H "Date: ${dateValue}" 
-H "Content-Type: ${contentType}"  
-H "Authorization: AWS ${s3Key}:${signature}"  
https://${bucket}.s3.amazonaws.com/${file}

无论我做什么,我都会收到SignatureDoesNotMatch错误.

任何关于如何解决这个问题的想法将不胜感激.

经过太多时间花在这上面我终于得到了它的工作:

这一行:

signature=`/bin/echo -n "$stringToSign" | openssl sha1 -hmac ${s3Secret} -binary | base64`

缺少’e’:

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

换句话说,在字符串签名之前,字符没有被转义.

另外,我还了解到,对于获取请求,内容类型毫无意义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读