生成数据密钥错误签名在 AWS KMS 上过期?
generateDataKey error Signature expired on AWS KMS?
我正在与我的客户合作,所以我克隆了 git 存储库并构建了使用 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 错误签名已过期...."
当您发送使用 AWS SigV4 协议签名的请求(至 KMS 或任何其他 AWS 服务)时,请求包含签名生成时的时间戳。公差为 5 分钟。这种机制的存在是为了使重放攻击更加困难(它们实际上具有更小的 window 来执行)。更多信息 here.
由于同一请求在您的服务器上运行良好,但在本地失败,我认为您本地工作区的时钟已关闭超过五分钟。
我正在与我的客户合作,所以我克隆了 git 存储库并构建了使用 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 错误签名已过期...."
当您发送使用 AWS SigV4 协议签名的请求(至 KMS 或任何其他 AWS 服务)时,请求包含签名生成时的时间戳。公差为 5 分钟。这种机制的存在是为了使重放攻击更加困难(它们实际上具有更小的 window 来执行)。更多信息 here.
由于同一请求在您的服务器上运行良好,但在本地失败,我认为您本地工作区的时钟已关闭超过五分钟。