0

JWK ⇄ Konwerter kluczy PEM

Konwertuj klucze kryptograficzne pomiędzy formatem JWK i PEM, korzystając z prawdziwego interfejsu API Web Crypto, dekoduj algorytm/krzywą/rozmiar i obliczaj odcisk palca JWK RFC 7638.

Buy Me a Coffee at ko-fi.com
Przetwarzanie... 0%
Klucz parsowania
Konwersja formatu
Obliczanie odcisku palca
Gotowe

Wynik

Klucze internetowe JSON (JWK) i klucze zakodowane w PEM są wyświetlane zamiennie w bibliotekach JWT, narzędziach TLS i konfiguracji OAuth/OIDC, ale ręczna konwersja między nimi oznacza struktury DER dekodujące base64 lub ponowne formatowanie JSON — łatwo popełnić subtelny błąd. To narzędzie dokonuje konwersji za pomocą prawdziwego Web Crypto API przeglądarki zamiast manipulacji tekstem: wklejony blok PEM jest importowany za pomocą crypto.subtle.importKey('spki'|'pkcs8', ...) i ponownie eksportowany jako JWK za pomocą eksportKey('jwk', ...); wklejony JWK jest importowany za pomocą importKey('jwk', ...) i ponownie eksportowany jako SPKI lub PKCS8 DER, a następnie zawijany w poprawny nagłówek PEM. Ponieważ przeglądarka sama sprawdza i dekoduje klucz, zniekształcony klucz lub źle dobrany algorytm powodują głośne niepowodzenie, zamiast cicho wytwarzać śmieci.

Obsługiwane algorytmy to RSA (RSASSA-PKCS1-v1_5), EC na krzywych P-256/P-384/P-521 oraz — jeśli przeglądarka je implementuje — Ed25519 i X25519. Obsługa przeglądarki dla Ed25519/X25519 w Web Crypto jest nadal niespójna w różnych silnikach, więc zamiast zgadywać na podstawie ciągu agenta użytkownika, narzędzie uruchamia rzeczywistą sondę crypto.subtle.generateKey() dla wybranej krzywej i wyraźnie informuje, czy nie jest ona tutaj obsługiwana, zamiast zwracać sfabrykowany wynik.

Każda konwersja dekoduje również prawdziwe metadane klucza: w przypadku kluczy RSA długość bitową modułu i algorytm mieszający prosto z obiektu CryptoKey; dla kluczy EC i OKP nazwana krzywa; i dla każdego klucza odcisk palca JWK RFC 7638 — skrót SHA-256 wymaganych członków JWK serializowany w ścisłym porządku leksykograficznym (e/kty/n dla RSA, crv/kty/x/y dla EC, crv/kty/x dla OKP/Ed25519/X25519). Ten odcisk palca jest tym, czego wiele systemów używa jako identyfikatora „dziecka” klucza, a błędne uporządkowanie elementów powoduje utworzenie zupełnie innego skrótu, co jest dokładnie tym rodzajem błędu, na który podatna jest implementacja ręcznie zwijana.

Ponieważ wszystko odbywa się za pośrednictwem crypto.subtle na karcie Twojej przeglądarki, materiał klucza prywatnego nigdy nie opuszcza Twojego urządzenia — nie ma serwera, przesyłania ani zewnętrznego wywołania API w żadnym momencie konwersji.