デジタル署名の作成・検証(RSA-PSS・ECDSA)
テキストにデジタル署名を付けたり、署名が正しいかを確認したりします。秘密鍵(PKCS#8のPEM)で署名し、公開鍵(SPKIのPEM)で検証します。処理はブラウザ標準のWeb Crypto APIで行い、鍵やメッセージがサーバーに送信されることはありません。鍵は キーペア生成 で作れます。RS256などJWTの署名は JWT生成 では扱わないため、RSA署名はこちらのRSA-PSSでお試しください(JWTのRS256はPKCS#1 v1.5方式で、RSA-PSSとは別物です)。
🔒 ブラウザ内で完結・入力データはサーバーに送信されません
使い方
- 「署名を作成」か「署名を検証」を選びます。
- 「アルゴリズム」と「ハッシュ」を選び、「メッセージ」を入力します。
- 署名するときは「秘密鍵(PKCS#8 PEM)」を貼り付けて「署名する」を押し、Base64の署名をコピーします。
- 検証するときは「公開鍵(SPKI PEM)」と「署名(Base64)」を貼り付けて「検証する」を押します。
注意事項
- PEMの中身から鍵の種類は判別できないため、選んだアルゴリズムで読み込みます。合わない場合は読み込みエラーになります。
- ECDSAの署名は、Web Cryptoのr||s連結形式(IEEE P1363)で出力・検証します。OpenSSLなどが出すDER形式の署名とは互換性がないため、DER形式の署名はそのままでは検証できません。
- RSA-PSSのソルト長は、選んだハッシュのバイト数(SHA-256なら32)に固定しています。
- 署名と検証で同じハッシュを選ばないと検証に失敗します。ECDSAは曲線に合わせたハッシュ(P-256はSHA-256、P-384はSHA-384、P-521はSHA-512)が既定です。
- メッセージはUTF-8のバイト列として署名します。改行コードや末尾の空白が違うと別のメッセージになります。
- 秘密鍵は他人に見せないでください。このツールは鍵をサーバーに送信・保存しませんが、本番用の重要な鍵は管理された環境で扱うことをおすすめします。
- パスフレーズで暗号化されたPEM(ENCRYPTED PRIVATE KEY)やRSA PRIVATE KEY形式、Ed25519には対応していません。
用語解説
デジタル署名
秘密鍵の持ち主だけが作れ、公開鍵で誰でも検証できる印です。メッセージが改ざんされていないことと、署名者を確認できます。
RSA-PSS
RSAの署名方式の一つで、ランダムなソルトを加えるため署名のたびに値が変わります。従来のPKCS#1 v1.5(RS256)より新しい設計です。
ECDSA
楕円曲線を使う署名方式です。RSAより短い鍵で同等の強度を得られます。署名はrとsの2つの数値で、このツールでは連結して扱います。
PEM / SPKI / PKCS#8
PEMはBase64とヘッダ行で鍵を表すテキスト形式です。公開鍵はSPKI、秘密鍵はPKCS#8という構造で格納します。
よくある質問
JWTのRS256署名はこのツールで作れますか?
いいえ。JWTのRS256はRSASSA-PKCS1-v1_5方式で、このツールのRSA-PSSとは別の方式です。両者の署名は互換性がなく、相互に検証できません。
OpenSSLで作った署名を検証できますか?
ECDSAはOpenSSLが出すDER形式ではなく、Web Cryptoのr||s連結形式(IEEE P1363)を使います。そのため、DER形式の署名はそのままでは検証できません。RSA-PSSはソルト長をハッシュ長に合わせた署名なら、Base64にすれば検証できます。
「選んだアルゴリズムの鍵として読み込めません」と出ます。
PEMだけでは鍵の種類が分からないため、選んだアルゴリズムで読み込みます。RSA鍵にECDSAを選んだ場合や、P-256の鍵にP-384を選んだ場合などに起きます。鍵の種類と曲線を確認してください。
キーペア生成で作ったRSA鍵はそのまま使えますか?
はい。PKCS#8/SPKI形式の鍵は用途に依らず共通なので、このツールがRSA-PSSとして読み込みます。ECDSAの鍵もそのまま使えます。
RSA-PSSは同じメッセージでも署名が毎回変わるのはなぜですか?
RSA-PSSはランダムなソルトを加えて署名するためで、正常な動作です。毎回違う署名でも、検証はどれも成功します。
このページをシェア
