オンラインでデジタル署名を検証する方法
公開鍵または共有鍵を使って、任意ペイロードに対するHMAC・RSA・ECDSA署名を検証します—API統合・JWT・ウェブフックのデバッグに。

なぜ重要か
ベンダーウェブフックの検証が失敗するとき、原因はだいたい鍵違い・アルゴリズム違い・正準化違い・エンコード違いのいずれかです。検証コードへconsole.logを増殖させるより、メッセージと署名を既知良好な検証に貼って結果を比べた方が、バグが自前かメッセージ側かが即わかります。
実際の3つのシーン
JWT・公開鍵を貼り、RS256/ES256/HS256を選択して「有効」「無効」を見ます。
バグをハンドラに限定
公開されたRSA公開鍵でバイナリ署名を検証します。
出典を確認
ペイロードをシークレットで署名し、受信ヘッダと突き合わせます。
コードパス確認
手順
署名検証ツールを開きます。
メッセージを貼る
正確な署名対象バイト。JWTなら
header.payloadです。AWS Sig V4ならcanonical string-to-signです。署名を貼る
hexかBase64—ソースに合わせて選びます。よくある形式は自動検出されます。
鍵を与える
対称: シークレット文字列(またはBase64/hex)。非対称: PEM形式の公開鍵。
アルゴリズムを選ぶ
HS256/HS384/HS512(HMAC)、RS256/RS512(RSA-PKCS1)、PS256(RSA-PSS)、ES256/ES384(ECDSA)。JWTのalg名でも同じです。
判定を読む
「Valid」または「Invalid」。無効ならアルゴリズム不一致・鍵パースエラー・署名長誤りなど一言理由が返ります。
入力
Message: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEifQ
Signature: L6S8LWkLzpcREMa8gxaaZbWwLNk0LgcBh6dRQpfIBrI
Key: MyVeryLongSharedSecretValue1234567890
Algorithm: HS256結果
Valid signature.
実践テクノ
- 必ずベンダーの参照ベクトルでテストしてください。 多くが既知メッセージ+署名の組を公開しており、ツール側の処理がアルゴリズムと整合するか確認できます。
- JWTではヘッダをコピーし
algが期待どおりか確認します。未署名トークン(alg=none)は無視してください—攻撃経路になります。 - 新規RSA設計にはPSSを。 PKCS#1 v1.5(RS256)は一般的ですがコミュニティはRSASSA-PSS(PS256)を好みます。
- 正準文字列に注意。
\nの有無やヘッダ名の大小など微妙な差が署名を反転させます。動いているキャプチャとdiffします。
よくある落とし穴
よくある誤り
公開鍵フォーマットの取り違え
PEMにはBEGIN PUBLIC KEY(SPKI)とBEGIN RSA PUBLIC KEY(PKCS#1)があります。公開鍵(証明書や秘密鍵ではない)を貼ったか確認します。
よくある誤り
署名がBase64URLなのにBase64として解釈
JWT署名はパディングなしBase64URL(アルファベット-_)です。入力エンコードをそれに合わせるか、手で差異を処理します。
よくある誤り
アルゴリズム名のエイリアス不一致
OpenSSLの「sha256WithRSAEncryption」はJWT語彙では「RS256」です。ドロップダウンの別名を正しく選んでください。
向いていない用途
- 証明書発行はOpenSSLやCAインフラ向きです。
- TLSサーバー証明書の検証はブラウザの仕事で、チェーン検証ロジックは単一署名チェックより遥かに複雑です。
- Windows AuthenticodeやApple Developer IDのコード署名はプラットフォーム専用ツールが必要です。
FAQ
Stripe/GitHubのウェブフックは検証できる?
はい。HS256(HMAC-SHA-256)、ダッシュボードのシークレット、生ボディ文字列、ヘッダ値を署名として貼れば、改ざんの有無が分かります。
Ed25519は?
ロードマップ上です。現時点はopenssl pkeyutl -verifyなどCLIを使ってください。
鍵はサーバーに送られる?
いいえ。WebCryptoはローカル処理で、鍵はブラウザプロセスから出ません。
次のステップ
- HMAC側の計算はHMACジェネレーター。
- プロトコルがボディハッシュの上にHMACを載せるならハッシュジェネレーター。
- 検証ツールへ貼る前にJWTセグメントをエンコード/デコードして確認できます。