0

JWK ⇄ PEM -avainmuunnin

Muunna salausavaimet JWK- ja PEM-muotojen välillä aidolla Web Crypto API:lla, tarkastele algoritmia/käyrää/kokoa ja laske RFC 7638 JWK-sormenjälki.

🔒 Käsitelty kokonaan selaimessasi – mitään tähän kirjoittamaasi ei koskaan ladata.

Käsitellään... 0%
Avainta jäsennetään
Muunnetaan muotoa
Lasketaan sormenjälkeä
Valmis

Tulos

JSON Web Keys (JWK) ja PEM-koodatut avaimet esiintyvät vaihtokelpoisina JWT-kirjastoissa, TLS-työkaluissa ja OAuth/OIDC-asetuksissa, mutta muuntaminen käsin tarkoittaa DER-rakenteiden base64-purkaamista tai JSONin uudelleenmuotoilua — helppo saada hienovaraisesti väärin. Tämä työkalu tekee muunnoksen selaimen aidolla Web Crypto API:lla tekstimanipuloinnin sijaan: liitetty PEM-lohko tuodaan crypto.subtle.importKey('spki'|'pkcs8', ...):lla ja viedään uudelleen JWK:na exportKey('jwk', ...):lla; liitetty JWK tuodaan importKey('jwk', ...):lla ja viedään uudelleen SPKI- tai PKCS8 DER -muotoon, minkä jälkeen se kääritään oikeaan PEM-otsakkeeseen. Koska selain itse validoi ja purkaa avainmateriaalin, virheellinen avain tai väärin valittu algoritmi epäonnistuu huomattavasti sen sijaan, että se tuottaisi hiljaa roskaa.

Tuetut algoritmit ovat RSA (RSASSA-PKCS1-v1_5), EC P-256/P-384/P-521-käyrillä ja — missä selain ne toteuttaa — Ed25519 ja X25519. Selainten tuki Ed25519/X25519:lle Web Cryptossa on edelleen epäyhtenäinen eri moottoreissa, joten sen sijaan, että arvattaisiin user agent -merkkijonosta, työkalu suorittaa aidon crypto.subtle.generateKey()-testin valitulle käyrälle ja kertoo suoraan, jos se ei ole täällä tuettu, sen sijaan, että se palauttaisi keksityn tuloksen.

Jokainen muunnos purkaa myös avaimen todelliset metatiedot: RSA-avaimille modulus-bittipituuden ja tiivistealgoritmin suoraan CryptoKey-oliosta; EC- ja OKP-avaimille nimetyn käyrän; ja jokaiselle avaimelle RFC 7638 JWK-sormenjäljen — SHA-256-tiivisteen JWK:n vaadittujen jäsenten sarjasta tiukassa aakkosjärjestyksessä (e/kty/n RSA:lle, crv/kty/x/y EC:lle, crv/kty/x OKP/Ed25519/X25519:lle). Tämä sormenjälki on se, mitä monet järjestelmät käyttävät avaimen "kid"-tunnisteena, ja jäsenten järjestyksen saaminen väärin tuottaa täysin eri tiivisteen, mikä on juuri sellainen virhe, jolle käsin tehty toteutus on altis.

Koska kaikki tapahtuu crypto.subtle-rajapinnan kautta omassa selainvälilehdessäsi, yksityinen avainmateriaali ei koskaan poistu laitteeltasi — mukana ei ole palvelinta, latausta tai ulkoista API-kutsua missään muunnoksen vaiheessa.