0

JWK ⇄ PEM raktų keitiklis

Konvertuokite kriptografinius raktus tarp JWK ir PEM formatų naudodami tikrą Web Crypto API, iššifruokite algoritmą / kreivę / dydį ir apskaičiuokite RFC 7638 JWK nykščio atspaudą.

Buy Me a Coffee at ko-fi.com
Apdorojama... 0%
Nagrinėjimo raktas
Konvertavimo formatas
Skaičiavimo nykščio atspaudas
Atlikta

Rezultatas

JSON žiniatinklio raktai (JWK) ir PEM užkoduoti raktai rodomi pakaitomis JWT bibliotekose, TLS įrankiuose ir OAuth / OIDC konfigūracijoje, tačiau konvertuojant iš vienos pusės į kitą rankiniu būdu reiškia „base64“ DER struktūrų dekodavimą arba JSON formatavimą – nesunku suklysti. Šis įrankis atlieka konvertavimą naudojant naršyklės tikrą Web Crypto API, o ne manipuliuoja tekstu: įklijuotas PEM blokas importuojamas naudojant crypto.subtle.importKey('spki'|'pkcs8', ...) ir iš naujo eksportuojamas kaip JWK su exportKey('jwk', ...); įklijuotas JWK importuojamas naudojant importKey('jwk', ...) ir pakartotinai eksportuojamas kaip SPKI arba PKCS8 DER, tada įvyniojamas į tinkamą PEM antraštę. Kadangi naršyklė pati patvirtina ir dekoduoja rakto medžiagą, netinkamai suformuotas raktas arba netinkamas algoritmo pasirinkimas garsiai sugenda, o ne tyliai generuoja šiukšles.

Palaikomi algoritmai yra RSA (RSASSA-PKCS1-v1_5), EC pagal P-256/P-384/P-521 kreives ir, kur naršyklė juos įdiegia, Ed25519 ir X25519. „Web Crypto“ naršyklės „Ed25519/X25519“ palaikymas vis dar nenuoseklus visuose varikliuose, todėl užuot spėjęs pagal vartotojo agento eilutę, įrankis paleidžia tikrą pasirinktos kreivės kripto.subtle.generateKey() zondą ir aiškiai praneša, ar ji čia nepalaikoma, o ne grąžina išgalvotą rezultatą.

Kiekviena konversija taip pat dekoduoja tikruosius rakto metaduomenis: RSA raktams modulio bitų ilgis ir maišos algoritmas tiesiai iš CryptoKey objekto; EC ir OKP raktams – pavadinta kreivė; ir kiekvienam raktui – RFC 7638 JWK nykščio atspaudas – būtinų JWK narių maiša SHA-256, sudaryta griežta leksikografine tvarka (e/kty/n – RSA, crv/kty/x/y – EC, crv/kty/x – OKP/Ed25519/X25). Šis nykščio atspaudas yra tai, ką daugelis sistemų naudoja kaip rakto „vaiko“ identifikatorių, o neteisingai nustačius nario tvarką, gaunama visiškai kitokia maiša, o tai yra būtent tokia klaida, kuri yra linkusi padaryti rankiniu būdu įdiegiant.

Kadangi viskas vyksta per crypto.subtle jūsų naršyklės skirtuke, privataus rakto medžiaga niekada nepalieka jūsų įrenginio – jokiu būdu konvertuojant nevyksta nei serveris, nei įkėlimas, nei išorinis API iškvietimas.