日時を固定する
UTC日時は最初の表示時に一度だけ設定します。「現在時刻」を押さない限り変わりません。S3の公開サンプルは置き換え前にプレビューでき、既知の署名と比較できます。
クラウド開発ツール
送信時のリクエスト項目を入力し、署名に使われる文字列を順に確認します。
ブラウザー内で計算し、通信しません。本番の秘密鍵は入力せず、テスト用の値を使ってください。
URLを入力してください。
レポートではSession Tokenを伏せます。伏せた正規リクエストで署名を再計算できません。
SignatureDoesNotMatchが出たら、まず鍵を疑う前に正規リクエストを比べてください。AWS SigV4署名デバッグはパス、クエリ、ヘッダー、本文ハッシュを分けて表示し、差がどこから生まれたかを追えます。
AWS公開のダミーキーと固定日時の例を読み込めます。計算は端末内だけで行い、IAM権限や実際のエンドポイントでの成功までは判定しません。
署名の不一致を、比較できる具体的な文字列に分解します。
AWS SigV4署名デバッグはクエリ名と値をエンコードしてから並べ、署名対象ヘッダーを正規化します。`+`と`%20`、重複キー、空白行の違いが正規リクエストにそのまま現れます。
正規リクエストのSHA-256、スコープ、署名文字列、任意のテスト署名を順に表示します。参照用の正規リクエストを貼ると、AWS SigV4署名デバッグが最初に異なる行を示します。
UTC日時は最初の表示時に一度だけ設定します。「現在時刻」を押さない限り変わりません。S3の公開サンプルは置き換え前にプレビューでき、既知の署名と比較できます。
手動で実行するかCtrl/Cmd+Enterを押します。URI、並べたクエリ、整形したヘッダー、本文ハッシュを先に確認してください。S3では選んだモードに応じてx-amz-content-sha256を加えます。
秘密鍵がなくても正規リクエストは比較できます。最終署名の比較だけテスト用キーが必要です。通常のレポートではSession Tokenを伏せ、正確な原文のコピーは別操作にしています。
HTTPメソッド、URI、整列クエリ、ヘッダー、SignedHeaders、本文ハッシュを連結します。重複クエリキーは残し、`+`は空白ではなく`%2B`として扱います。
正規リクエストのSHA-256と日付・リージョン・サービスのスコープを表示します。リージョンを誤ると文字列だけでなく導出されるHMACキーも変わります。
秘密鍵なしでも構造の診断はできます。使い捨てのテスト用キーを入力した場合だけSignatureとAuthorizationを計算し、秘密鍵や中間キーは表示しません。
参照用の正規リクエストを行ごとに照合し、64桁の署名も比較します。SigV4署名の不一致を見つけても、AWSでの認証成功を意味するわけではありません。
まずクライアントの正規リクエストとAWSが返した期待値を比較します。AWS SigV4署名デバッグで最初の差分を見つけ、URIの符号化、クエリ順、署名対象ヘッダー、本文ハッシュを順に調べます。
実際に届いたリクエストと署名時のリクエストが違う場合があります。プロキシがヘッダーやパスを変えていないか確認し、日時、リージョン、サービス、テスト用キーの組も照合してください。
正規リクエスト、そのハッシュ、署名文字列は確認できます。最終HMACの再計算には対応する秘密鍵が必要です。入力がなければ署名値は作りません。
エラーの意味はサービスと処理段階によります。このページはAWSを呼び出さずIAMポリシーも読みません。サービスのログと権限診断を合わせて確認してください。
一部のエラー応答には期待する正規リクエストや署名文字列が含まれます。SDKのデバッグログも利用できます。参照欄に貼る前に実際のSession Tokenを取り除いてください。
解決しませんでしたか?
公開S3サンプルで計算を確認し、次に非本番のリクエストを比較してください。AWS SigV4署名デバッグは通信せずに差分を示します。