JWK ⇄ PEM Anahtar Dönüştürücü
Gerçek Web Kripto API'sini kullanarak kriptografik anahtarları JWK ve PEM formatı arasında dönüştürün, algoritmanın/eğrinin/boyutun kodunu çözün ve RFC 7638 JWK parmak izini hesaplayın.
Sonuç
JSON Web Anahtarları (JWK) ve PEM kodlu anahtarlar, JWT kitaplıklarında, TLS araçlarında ve OAuth/OIDC yapılandırmasında birbirinin yerine görünür, ancak ikisi arasında elle dönüştürme yapmak, base64 kod çözme DER yapılarını veya JSON'u yeniden biçimlendirmek anlamına gelir; bu da kolayca yanlış yapılır. Bu araç, dönüştürme işlemini metin manipülasyonu yerine tarayıcının gerçek Web Crypto API'si ile gerçekleştirir: yapıştırılan bir PEM bloğu crypto.subtle.importKey('spki'|'pkcs8', ...) ile içe aktarılır ve importKey('jwk', ...) ile JWK olarak yeniden dışa aktarılır; yapıştırılan bir JWK, importKey('jwk', ...) ile içe aktarılır ve SPKI veya PKCS8 DER olarak yeniden dışa aktarılır, ardından doğru PEM başlığına sarılır. Tarayıcının kendisi anahtar materyali doğrulayıp kodunu çözdüğü için, hatalı biçimlendirilmiş bir anahtar veya uyumsuz bir algoritma seçimi, sessizce çöp üretmek yerine yüksek sesle başarısız olur.
Desteklenen algoritmalar RSA (RSASSA-PKCS1-v1_5), P-256/P-384/P-521 eğrilerindeki EC ve tarayıcının bunları uyguladığı yerde Ed25519 ve X25519'dur. Web Crypto'da Ed25519/X25519 için tarayıcı desteği, motorlar arasında hala tutarsızdır; bu nedenle, kullanıcı aracısı dizesinden tahmin yapmak yerine, araç, seçilen eğri için gerçek bir crypto.subtle.generateKey() araştırması çalıştırır ve uydurma bir sonuç döndürmek yerine, burada desteklenip desteklenmediğini size açıkça söyler.
Her dönüşüm aynı zamanda anahtarın gerçek meta verilerinin kodunu da çözer: RSA anahtarları için modül bit uzunluğu ve karma algoritması doğrudan CryptoKey nesnesinden; EC ve OKP anahtarları için adlandırılmış eğri; ve her anahtar için, RFC 7638 JWK parmak izi — JWK'nin gerekli üyelerinin sıkı sözlüksel sıraya göre serileştirilmiş bir SHA-256 karması (RSA için e/kty/n, EC için crv/kty/x/y, OKP/Ed25519/X25519 için crv/kty/x). Bu parmak izi, birçok sistemin anahtarın "çocuk" tanımlayıcısı olarak kullandığı şeydir ve üye sırasını yanlış almak tamamen farklı bir karma üretir; bu da tam olarak elle haddelenmiş bir uygulamanın eğilimli olduğu türden bir hatadır.
Her şey kendi tarayıcı sekmenizdeki crypto.subtle üzerinden yürütüldüğü için, özel anahtar materyali asla cihazınızdan ayrılmaz; dönüşümün herhangi bir noktasında sunucu, yükleme veya harici API çağrısı yoktur.