亚马逊S3签名

时间:2017-05-21 15:15:55

标签: node.js amazon-web-services amazon-s3

如何在nodejs环境中的加密中创建十六进制编码签名?

enter image description here

你是这样做的吗?

const secret = 'mysecret';
const date = yyyymmdd;
const dateKey = crypto.createHmac('sha256', 'AWS4' + secret + ',' + date);
const dateRegionKey = crypto('sha256', dateKey + ',' + 'myregion')
const DateRegionServiceKey = crypto('sha256', dateRegionKey + ',' + 'someservice');
const signingKey = crypto('sha256', DateRegionServiceKey + ',' + 'aws4_request');

const signature = crypo('sha256', signingKey + base64Policy);

2 个答案:

答案 0 :(得分:0)

高级别看起来不错。我希望你知道秘密不只是一个字符串,它是你的IAM用户accessKey / secretKey对的secretKey。

您是否有任何特殊原因需要自己动手并且不使用AWS SDK?

另请参阅下面的示例签名实现(在Java中),该实现适用于AWS ElasticSearch。查看getSignatureKey和calculateSignature方法。

https://github.com/dy10/aws-elasticsearch-query-java/blob/master/src/main/java/dy/aws/es/AWSV4Auth.java

答案 1 :(得分:0)

你应该使用这个库https://github.com/mhart/aws4 你需要使用result = aws4.sign({}, { cred from AWS })

并返回result.headers,它们是您需要在请求中发送的标头