Webhook 署名検証ツール
GitHub、Stripe、Slack、Shopify、Standard Webhooks の署名を検証し、失敗の原因を特定
入力
メモリ内にのみ保持され、保存・記録・送信されることはありません。
1 行に 1 つの「名前: 値」、または JSON オブジェクト。名前の大文字小文字は区別しません。
必須ヘッダー
X-Hub-Signature-256なし
テキストボックスは CRLF 改行を LF に変換します。正確なバイト列が重要な場合は、ボディを Hex か Base64 で貼り付けるか、ファイルから読み込んでください。
生の HTTP リクエストを貼り付け
リクエスト行、ヘッダー、空行、そしてボディの順です。
結果
詳細
検証ツールが確認すること
Webhook の配信(署名シークレット、ヘッダー、正確な生のボディ)を貼り付けると、各プロバイダー独自のルールで署名を再計算します。GitHub の X-Hub-Signature-256、リクエストのタイムスタンプを含む Slack の v0 署名、Shopify の Base64 HMAC、Stripe の t= と v1= 署名(シークレット切り替え中はどの v1 が一致してもよい)、Standard Webhooks と Svix の webhook-id・webhook-timestamp・webhook-signature、そして設定可能な汎用 HMAC に対応します。署名の有効性とタイムスタンプの新しさは別々に表示されます。
検証が失敗する理由
署名は正確なバイト列を対象とします。署名が一致しない場合、よくある間違いで再計算し、最初に一致したものを示します。末尾の改行の追加や欠落、CRLF と LF の変換、JSON の解析と再シリアライズ、シークレット前後の空白、Base64 デコードせずに使った whsec_ シークレット、別のプロバイダー方式などです。ヘッダーの欠落、不正な形式の署名、古いまたは未来のタイムスタンプは、それぞれ個別の指摘として表示されます。
正確なバイト列
検証には常に生のボディを使い、整形プレビューは表示専用です。テキストボックスは CRLF 改行を LF に変換するため、正確なバイト列が重要な場合はボディを Hex か Base64 で貼り付けるか、ファイルから読み込んでください。ボディは 5 MB まで、シークレットは 64 KB まで受け付けます。
プライバシーと制限
すべての処理はブラウザー内の Web Crypto で行われます。シークレットはメモリ内にのみ保持され、保存、URL への追加、記録、送信は一切ありません。記憶するのはプロバイダーと許容範囲だけです。リクエストの再送やプロバイダーへの接続は行わず、Standard Webhooks v1a(Ed25519)などの非対称署名は検証しません。
