桉树海象连接问题

我从Eucalyptus开始,有一些S3和EC2背景。 我有一个应用程序,我使用个人图书馆与S3接口,并从那里存储/检索文件。 现在我想让我的应用程序与Walrus兼容。

这是我的设置:

Ubuntu 10.04服务器UEC:

  • 只是把它安装在一个新的虚拟机上,select所有的组件,但是只有数控,因为我只需要Walrus
  • 开机后,我确认海象在10.211.55.18:8773/services/Walrus运行
  • 转到10.211.55.18:8443 Web门户并更改了pipe理员密码
  • 从同一个地方我检索查询接口凭证(ID +秘密)

我能够通过Cyber​​duck和Cloudberry与Walrus交互,没有任何问题,我创build了一个桶'mybucket'和一个对象'myobject',但是不能用一个编程HTTP库做一个简单的请求,既不使用curl生成的授权

如果我去浏览器并插入: http://10.211.55.18:8773/services/Walrus/mybucket/myfile : http://10.211.55.18:8773/services/Walrus/mybucket/myfile : http://10.211.55.18:8773/services/Walrus/mybucket/myfile我得到一个漂亮的XML消息与授权错误(如预期)。

但是当试图获得这个对象时,我已经完成了下面的签名过程(伪代码):

 digest = new_openssl_sha1_digest date = "Sat, 03 Mar 2012 18:13:54 GMT" (now UTC datetime) description = "GET\n\n\nSat, 03 Mar 2012 18:13:54 GMT\n/mybucket/myfile" signature = new_base_64_HMAC(digest, secret_key, description) headers = { Date: date, Authorization: "AWS <access_key_id>:<signature>" } 

那么我最终得到这些请求的URL和标题:

path: http://10.211.55.18:8773/services/Walrus/mybucket/myfile : http://10.211.55.18:8773/services/Walrus/mybucket/myfile : http://10.211.55.18:8773/services/Walrus/mybucket/myfile

标题: {"date"=>"Sat, 03 Mar 2012 18:13:54 GMT", "Authorization"=>"AWS WKy3rMzOWPouVOxK1p3Ar1C2uRBwa2XXXXXX:U/fpoVUCbN64h8iRICp9JZzKWgE="}

但是当我像上面发出一个GET请求时,我只得到一个小小的回应:

 <headers> Status: 400 Unauthorized Content-Type: text/plain; charset=UTF-8 <body> Failure: 400 Bad Request 

我找不到我做错了什么,我正在跟踪S3签名过程。 我需要理解这一点,因为我需要为我的应用程序实现一个插件海象,所以我不能使用第三方工具。

希望有人能帮忙,谢谢。

那么我发现发生了什么……实际上,海象包括签名上的/ services / Walruspath,我只是在/ mybucket / myfile上签名。 所以可以通过签署string'/ services / Walrus / bucket / file'来解决这个问题,就是这样!