Zkontrolovat JWKS a extrahovat veřejné klíče PEM
- Dashboard
- Dokumentace
- API
Co je JWKS?
JWKS (JSON Web Key Set, RFC 7517) je JSON dokument, který seskupuje seznam veřejných klíčů ve strukturované formě. Slouží k publikování klíčů, které vydavatel JWT používá pro podpis svých tokenů, aby je kterýkoli konzument mohl získat a ověřit podpis tokenů, které přijímá. Formát se vždy prezentuje takto:
{
"keys": [
{ "kty": "RSA", "kid": "abc123", "use": "sig", "alg": "RS256", "n": "...", "e": "AQAB" },
{ "kty": "EC", "kid": "def456", "use": "sig", "alg": "ES256", "crv": "P-256", "x": "...", "y": "..." }
]
}
Každá položka pole keys je JWK (JSON Web Key), která
popisuje veřejný klíč: typ klíče (kty), identifikátor (kid), zamýšlené
použití (use), cílový algoritmus (alg) a kryptografické komponenty.
Kdy slouží JWKS?
JWKS je páteř moderních OAuth2 a OpenID Connect architektur. Setkáte se s ním v několika kontextech:
- OIDC discovery: každý OpenID Connect provider vystavuje konfigurační dokument na
/.well-known/openid-configuration, který obsahuje polejwks_uri. Na této URL je JWKS uvádějící aktivní veřejné klíče. - JWT verifikace: když vaše API přijme token podepsaný v RS256 nebo ES256,
čte
kidz headeru, stáhne JWKS vydavatele, najde odpovídající klíč, odvodí z něj veřejný klíč ve formátu PEM, a ověří podpis. - Rotace klíčů: vydavatel může současně publikovat více klíčů, což umožňuje zavést nový klíč pro podepisování nových tokenů a zároveň zachovat starý v provozu po dobu, kdy expirují cirkulující tokeny.
- Federace: SAML, SCIM, propojené služby, publikace JWKS se vyhne ručnímu výměně X.509 certifikátů mezi partnery.
Klíčová pole JWK
Některá pole se systematicky vrací v JWK. Tento nástroj je extrahuje a zobrazuje pro každý klíč analyzovaného JWKS:
kid(key ID): unikátní identifikátor klíče. Tuto hodnotu header JWT umisťuje do svého polekidpro indikaci, který klíč JWKS má sloužit k verifikaci.kty(key type): kryptografická rodina. Dvě dominantní hodnoty jsouRSA(klasické RSA klíče, používané s RS256, RS384, RS512) aEC(eliptické křivky, používané s ES256, ES384, ES512).alg(algorithm): podpisový algoritmus, pro který je tento klíč určen. Volitelné pole, ale často vyplněné. Umožňuje rychle filtrovat klíče použitelné pro daný JWT.use: použití klíče.sigpro podpis (obvyklý případ),encpro šifrování (vzácné, používané s JWE).
Proč převést JWK na PEM?
Většina klasických kryptografických knihoven (OpenSSL, openssl_verify v
PHP, crypto v Node.js, JCA v Javě) přijímá veřejné klíče ve formátu
PEM (Base64 ohraničený -----BEGIN PUBLIC KEY-----), ne přímo
ve formátu JWK. Konverze JWK na PEM je tedy nezbytná pro:
- Manuální ověření podpisu JWT ze skriptu nebo nástroje příkazové řádky
(
jwt,jose,step crypto). - Import klíče do debug nástroje jako JWT Verifier, který očekává PEM klíč ve svém poli "veřejný klíč".
- Uložení klíče do lokální cache nebo konfiguračního souboru v univerzální a čitelné formě.
- Rychlé porovnání dvou klíčů (PEM formát usnadňuje vizuální diff).
Limity a upozornění
Tento nástroj podporuje veřejné klíče RSA (kty=RSA) a EC
(kty=EC na křivkách P-256, P-384,
P-521). Ostatní typy (OKP pro Ed25519, oct pro
symetrické klíče) nejsou převedeny: jsou signalizovány s chybovou zprávou per
položka, zbytek JWKS zůstává čitelný.
- Konverze probíhá v jednom směru: JWKS na PEM. Rekonstrukce JWK z existujícího PEM klíče není pokryta touto verzí.
- JWKS musí být vložen jak je ve formě JSON textu. Automatické
získání z
jwks_uriURL nebo OIDC endpointu se na straně serveru neprovádí, aby se zabránilo neočekávaným outbound voláním. - Privátní klíče by se neměly objevit v veřejném JWKS, a tento nástroj extrahuje pouze veřejné komponenty, i kdyby byl přítomen privátní klíč.
Jak ho používat
- Získejte JWKS vydavatele, kterého chcete inspekovat. Pro OIDC poskytovatele je
adresa obvykle
https://priklad.com/.well-known/jwks.jsonnebohttps://priklad.com/oauth2/jwks. - Zkopírujte celý JSON dokument (objekt obsahující
keysklíč). - Vložte ho do vstupního pole nástroje a spusťte analýzu.
- Pro každý klíč JWKS nástroj zobrazí jeho
kid,kty,alg,usea veřejný klíč převedený do PEM formátu. - Klikněte na "kopírovat" pro získání PEM a použití ve verifikačním skriptu, v našem JWT Verifieru, nebo v jakémkoli OpenSSL kompatibilním nástroji.
Často kladené otázky
Kde najít JWKS OIDC poskytovatele?
Velká většina OpenID Connect poskytovatelů publikuje discovery dokument na
https://priklad.com/.well-known/openid-configuration. Tento JSON obsahuje pole
jwks_uri, které ukazuje na efektivní JWKS. Někteří poskytovatelé servírují přímo
JWKS na https://priklad.com/.well-known/jwks.json nebo na dedikovaném OAuth2
endpointu. Stáhněte obsah a vložte ho sem jak je.
Proč je kid důležitý?
kid (key ID) je identifikátor, který header JWT umisťuje do svého vlastního pole
kid pro indikaci, který klíč JWKS má sloužit k verifikaci. Bez tohoto
identifikátoru by musel konzument zkoušet každý klíč JWKS, což komplikuje diagnostiku v
případě chyby. Přítomnost kid per klíč je tedy považována za dobrou
praxi, a všichni seriózní IdP ho publikují.
Jaký je rozdíl mezi kty=RSA a kty=EC?
RSA je historická rodina asymetrických podpisů, používaná s RS256, RS384, RS512. Klíče
jsou popsány modulem n a exponentem e. EC (Elliptic
Curve) je novější a dává kratší podpisy pro ekvivalentní úroveň zabezpečení.
EC klíče jsou popsány křivkou (crv = P-256, P-384 nebo P-521) a dvěma
souřadnicemi x a y. Tento nástroj převádí obě rodiny do PEM.
Jak použít extrahovaný PEM pro verifikaci JWT?
Zkopírujte PEM, pak ho vložte do pole "veřejný klíč" našeho
JWT Verifieru s JWT k validaci. Můžete ho také
použít z příkazové řádky s openssl dgst, z Node.js s
crypto.verify, z Pythonu s cryptography nebo
PyJWT, z Javy s JCA, atd. PEM formát je univerzálně rozpoznán.
Můj JWKS obsahuje Ed25519 klíč (OKP), proč není převeden?
Konverze OKP klíčů (Ed25519, Ed448, X25519, X448) vyžaduje specifickou
logiku a odlišné DER kódování od RSA a EC klíčů. Tato verze nástroje
podporuje pouze RSA a EC. Nepodporované klíče jsou signalizovány
individuálně s chybovou zprávou, bez blokování analýzy ostatních položek JWKS.
Lze získat JWKS z URL místo vložení?
Ne v této verzi. Nástroj neprovádí žádné outbound HTTP volání pro zachování rychlosti a vyhnutí se
tomu, aby se choval jako nedobrovolný proxy. Stáhněte JWKS z vašeho prohlížeče nebo s
curl https://priklad.com/.well-known/jwks.json a pak vložte obsah do vstupního pole.
Ukázka požadavku
curl -X POST https://cdrn.fr/api/v1/tools/jwks-inspector/execute \
-H "Content-Type: application/json" \
-d '{"jwks":"..."}'
Vstupní schéma
| Pole | Typ | Povinné | Výchozí |
|---|---|---|---|
jwks |
text | ✓ | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všechny dostupné nástrojeGET https://cdrn.fr/api/v1/tools/jwks-inspector- získá schéma tohoto nástrojePOST https://cdrn.fr/api/v1/tools/jwks-inspector/execute- spustí tento nástroj s JSON payloadem