如何在nodejs环境中的加密中创建十六进制编码签名?
你是这样做的吗?
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);
答案 0 :(得分:0)
高级别看起来不错。我希望你知道秘密不只是一个字符串,它是你的IAM用户accessKey / secretKey对的secretKey。
您是否有任何特殊原因需要自己动手并且不使用AWS SDK?
另请参阅下面的示例签名实现(在Java中),该实现适用于AWS ElasticSearch。查看getSignatureKey和calculateSignature方法。
答案 1 :(得分:0)
你应该使用这个库https://github.com/mhart/aws4
你需要使用result = aws4.sign({}, { cred from AWS })
并返回result.headers,它们是您需要在请求中发送的标头