0

我正在与我的客户合作,因此我克隆了 git repo 并构建了使用 AWS KMS 生成数据密钥的应用程序。

一切都在实时服务器上运行良好,但是当我在本地环境中失败时。

这是代码片段和错误结果。

const AWS = require('aws-sdk');
AWS.config.update({region:'eu-central-1'});
const kms = new AWS.KMS({ apiVersion: '2014-11-01' });

kms.generateDataKey({
 KeyId: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX',
 KeySpec: 'AES_256',
}).promise()
.catch(err => {
 console.error('generateDataKey error', err.message, err.stack);
 throw err;
})
.then(data => {
 console.log(data);
});

有没有办法解决这个错误?

在此处输入图像描述

GenerateDataKey 错误签名已过期......

4

1 回答 1

0

当您发送使用 AWS SigV4 协议签名的请求(到 KMS 或任何其他 AWS 服务)时,请求会包含生成签名时的时间戳。公差为 5 分钟。这种机制是为了使重放攻击更难(它们基本上有一个较小的窗口来执行)。更多信息在这里

由于相同的请求在您的服务器上运行良好,但在本地失败,我认为您本地工作区的时钟已关闭超过五分钟。

于 2017-12-04T17:13:17.597 回答