本文へスキップ
ecdsa.com
jwks-rsa (Node.js)JWKS と鍵のディスカバリ

エラーメッセージ

The JWKS endpoint did not contain any signing keys

別の表記

  • The JWKS endpoint did not contain any keys

jwks-rsa (Node.js) — JwksError from getSigningKey()

このエラーの意味

JWKS エンドポイントは鍵を返しましたが、フィルタリングの結果、署名を検証できる鍵が 1 つも残りませんでした。jwks-rsa が残すのは、`use` が `"sig"` であるか存在せず、`kty` が RSA、EC、OKP のいずれかで、公開鍵として正常にインポートできる鍵だけです。それ以外の鍵(暗号化鍵、共通鍵、不正な形式の JWK、秘密鍵を含む JWK)はすべて破棄されます。よく似たメッセージ「did not contain any keys」は、`keys` 配列そのものが空であるか存在しないことを意味します。

発生する理由

修正方法

  1. 1.

    すべての鍵の kty、use、alg を確認する

    jq を 1 行実行するだけで、各鍵が除外される理由がわかります。`has_private: true` の行がある場合、鍵セットから秘密鍵が漏洩しています。その鍵を削除し、ローテーションしてください。

    bash
    curl -s "$JWKS_URI" | jq '.keys[] | {kid, kty, use, alg, crv, has_private: has("d")}'
  2. 2.

    署名鍵を少なくとも 1 つ公開する

    エンドポイントを自分で運用している場合は、使用中の各署名鍵を `use: "sig"`、一意の `kid`、その鍵の `alg` とともに含めてください。暗号化鍵は、`use: "enc"` が付いていれば同じセットに含めてもかまいません。

    json
    {
      "keys": [
        { "kty": "RSA", "kid": "sig-2026-10", "use": "sig", "alg": "RS256", "n": "…", "e": "AQAB" },
        { "kty": "RSA", "kid": "enc-2026", "use": "enc", "alg": "RSA-OAEP-256", "n": "…", "e": "AQAB" }
      ]
    }

関連するエラー

署名エラーデータベースをすべて見る