Об этом инструменте
JSON Web Key (JWK) — это JSON-представление криптографического ключа, используемое библиотеками JWT, эндпоинтами JWKS (/.well-known/jwks.json) и многими веб-API. PEM — более старый текстовый формат в обёртке Base64, который до сих пор используют большинство крипто-инструментов, серверов и удостоверяющих центров. Этот инструмент выполняет преобразование между ними полностью в вашем браузере, используя тот же движок WebCrypto, которому браузер уже доверяет для TLS.
Выберите направление, затем тип ключа (RSA или эллиптическая кривая P-256/P-384) и назначение (подпись или шифрование), соответствующие преобразуемому ключу — WebCrypto нужна эта информация, чтобы правильно интерпретировать байты. Открытые ключи преобразуются в JWK без поля d; приватные PEM/PEM пары ключей (PKCS#8) дают JWK с n/e/d (RSA) или x/y/d (EC). Поддерживаются только незашифрованные приватные ключи PKCS#8 и открытые ключи SPKI — старые PKCS#1 (RSA PRIVATE KEY) или защищённые паролем PEM нужно сначала преобразовать в PKCS#8 (например, с помощью openssl pkcs8).
Частые вопросы
Что такое конечная точка JWKS и зачем она мне нужна?
Конечная точка JWKS (JSON Web Key Set) — это URL (часто `/.well-known/jwks.json`), который публикует открытые ключи, используемые провайдером аутентификации (например, поставщиком идентификации OAuth/OIDC) для подписи JWT, в формате JWK, чтобы доверяющие стороны могли получить их и использовать для проверки подписей токенов. Если вы настраиваете собственного эмитента токенов, вы бы конвертировали открытую часть вашего ключа подписи в JWK для публикации там.
Почему моё преобразование завершается ошибкой импорта?
Самая частая причина — несоответствие выбранного типа ключа или назначения — например, выбор «EC P-256» для ключа, который на самом деле является RSA, или «Шифрование» для ключа, созданного для подписи. WebCrypto строго проверяет алгоритм по фактическому ключевому материалу, поэтому перепроверьте, соответствуют ли выбранные параметры тому, для чего ключ был изначально создан.