web-dev-qa-db-ja.com

署名の期限切れ:エラーよりも前になりました:InvalidSignatureException

AWS API GatewayとIAM認証を使用した小さな例を試しています。 AWS API Gatewayは以下のエンドポイントを生成しました:

https://xyz1234.execute-api.us-east-2.amazonaws.com/Users/users

with POST actionおよびパラメーターなし。

最初にこのためにIAMをオフにしましたPOSTメソッドと、Postmanが機能する結果を確認しました。その後、新しいIAMユーザーを作成し、ユーザーにAmazonAPIGatewayInvokeFullAccessポリシーをアタッチして、APIを呼び出す許可を与えましたPOSTメソッドのIAMを有効にしました。

次に、Postmanにアクセスし、AccessKey、Secret Key、AWS Regionをus-east-2およびサービス名はexecute-apiとリクエストを実行しようとしましたが、戻りコードとして403のInvalidSignatureExceptionエラーが発生しました。

本文には次のメッセージが含まれます。

Signature expired: 20170517T062414Z is now earlier than 20170517T062840Z (20170517T063340Z - 5 min.)" 

私は何が欠けていますか?

22
j10

AWS sigV4で署名されたリクエストには、署名が作成されたときのタイムスタンプが含まれます。署名は、作成されてから短時間のみ有効です。 (これにより、リプレイ攻撃が試行される時間が制限されます。)

署名が検証されると、タイムスタンプが現在の時刻と比較されます。これにより、署名が最近作成されていないことが示された場合、署名の検証は失敗し、指定したエラーメッセージが表示されます。

これの一般的な原因は、署名を生成するホストのローカルクロックが数分以上ずれている場合です。

20
MikeD at AWS

マシンのローカルクロックをNTPと同期する必要があります。

例えばUbuntuマシンの場合:

Sudo ntpdate pool.ntp.org

システム時刻が頻繁に同期しなくなります。定期的に同期を保つ必要があります。

次のリンクで説明されているように、毎日のCRONジョブを実行してシステム時刻を同期させることができます。 Linuxで定期的に時刻を同期する

Ntpdateと呼ばれる時刻を同期するbashスクリプトを作成し、以下をその中に入れます

#!/bin/sh
# sync server time
/usr/sbin/ntpdate pool.ntp.org >> /tmp/ntpdate.log

このスクリプトを好きな場所に配置し、cronを設定して、毎日1回実行されるように毎日cronディレクトリに配置します。したがって、ntpdateスクリプトは/etc/cron.daily/ntpdateにあり、実行されます。毎日

このスクリプトを実行可能にする

chmod +x /etc/cron.daily/ntpdate

スクリプトを1回実行してテストし、/ tmp/ntpdate.logで出力を探します

/etc/cron.daily/ntpdate

ログファイルに次のように表示されます。

26 Aug 12:19:06 ntpdate[2191]: adjust time server 206.108.0.131 offset 0.272120 sec
24

私もこの問題に直面していました

correctClockSkew: true

そして私のために修正された問題

const nodemailer = require('nodemailer');
const ses = require('nodemailer-ses-transport');



let transporter = nodemailer.createTransport(ses({
        correctClockSkew: true,
        accessKeyId: **,
        secretAccessKey: **,
        region: **
    }));
1
Ashutosh Jha

timedatectlコマンドを使用して基礎となるマシンの日時を変更すると、同様の問題に直面しました...

Sudo apt install ntp
Sudo apt install ntpdate
Sudo ntpdate ntp.ubuntu.com

正しい現在の日付時刻と時刻を同期した後、この問題は解決されます

1
Abhishek Jain

Amazon KinesisからローカルWebサイトにビデオを取得するときに、この同じ問題に直面しています。この問題を解決するために、コンピューターにcronyをインストールしました。このcronyは私の問題を解決しました。次のリンクでAmazon cronyのインストールを確認できます。 https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/set-time.html

0
Mahesh Basnet