Преобразование JSON Web Key в PEM и обратно для ключей RSA, EC и Ed25519, с отпечатком
Работает в вашем браузере. Ничего из того, что вы вводите, никуда не отправляется. Проверено 16 октября 2026 г..JWK — это ключ, записанный в JSON, который используют JWT, OAuth и OpenID Connect; PEM — текстовая форма в Base64, которую используют OpenSSL и серверы. Вставьте любую из них, и она будет преобразована в другую — для ключей RSA, EC (P-256, P-384, P-521, secp256k1) и Ed25519, с отпечатком по RFC 7638, полностью в вашем браузере.
Эта страница переведена машинным способом с английского оригинала. Перевод ещё не проверен человеком, поэтому ориентируйтесь на английскую версию. Читать английский оригинал
Вставьте JWK, JWK Set из адреса jwks.json или ключ либо сертификат PEM.
Направление определяется автоматически: JWK становится PEM, PEM становится JWK.
Выберите формат PEM, например PKCS#8 или PKCS#1, или отметьте «Только открытый ключ», чтобы убрать закрытую часть.
Нажмите «Копировать» или «Скачать»; для каждого ключа показан отпечаток по RFC 7638.
JSON Web Key и PEM-файлы содержат одни и те же числа в двух обёртках. JWK называет каждую часть, например модуль "n" и экспоненту "e" ключа RSA или точку "x" и "y" ключа EC, в Base64url. PEM-файл содержит те же значения в DER — двоичном формате X.509 и OpenSSL — между строками BEGIN и END.
Что преобразуется.
| Ключ | JWK в PEM | PEM в JWK |
|---|---|---|
| RSA открытый | SPKI или PKCS#1 | PUBLIC KEY, RSA PUBLIC KEY, сертификат |
| RSA закрытый | PKCS#8 или PKCS#1 | PRIVATE KEY, RSA PRIVATE KEY |
| EC P-256, P-384, P-521, secp256k1 | SPKI; PKCS#8 или SEC1 | PUBLIC KEY, PRIVATE KEY, EC PRIVATE KEY |
| Ed25519, Ed448, X25519, X448 | SPKI; PKCS#8 | PUBLIC KEY, PRIVATE KEY |
JWK Set с несколькими ключами превращается в несколько блоков PEM, а несколько блоков PEM — в JWK Set. Сертификаты и запросы на сертификат дают свой открытый ключ.
Форматы. SPKI ("PUBLIC KEY") и PKCS#8 ("PRIVATE KEY") подходят для любого типа ключа, и именно их ожидает большинство библиотек. PKCS#1 ("RSA PUBLIC KEY", "RSA PRIVATE KEY") — более старая форма только для RSA; SEC1 ("EC PRIVATE KEY") — более старая EC-форма OpenSSL.
Отпечаток. Для каждого ключа показан отпечаток по RFC 7638: SHA-256 его обязательных полей в фиксированном порядке, который многие провайдеры используют как "kid". Отметьте «Добавить kid», чтобы записать его в JWK.
Закрытые ключи. Отметьте «Только открытый ключ», чтобы убрать закрытые поля перед публикацией. Если закрытый ключ не содержит своей открытой части, она вычисляется встроенным в браузер WebCrypto. PEM-файлы, защищённые паролем, сначала нужно расшифровать.
Результат побайтно сверен с Node.js и OpenSSL для каждого поддерживаемого типа ключа, а также с примерами из RFC 7517 и RFC 7638. Ключи никуда не отправляются, и ничего из вставленного не сохраняется.
Вставьте JWK в поле, и PEM появится сразу: блок PUBLIC KEY для открытого ключа, блок PRIVATE KEY для закрытого. Для ключей RSA можно переключиться на более старую форму PKCS#1, а для закрытых ключей EC — на SEC1. JWK Set с несколькими ключами даёт по одному блоку PEM на каждый ключ.
Откройте адрес jwks.json провайдера в браузере, скопируйте весь JSON и вставьте его сюда. Каждый ключ из списка keys станет открытым ключом PEM с подписью типа, размера и отпечатка, чтобы его можно было сопоставить с kid в заголовке проверяемого токена.
Оба содержат ключ RSA. PKCS#1 с меткой RSA PRIVATE KEY или RSA PUBLIC KEY содержит только числа RSA. PKCS#8 с меткой PRIVATE KEY оборачивает ключ любого типа вместе с идентификатором алгоритма, как SPKI делает для открытых ключей. Большинство современных библиотек, включая Java и Node.js, ожидают PKCS#8 и SPKI.
Короткий идентификатор, вычисляемый из самого ключа и описанный в RFC 7638: обязательные поля, например e, kty и n для RSA, записываются в JSON в алфавитном порядке без пробелов и хешируются SHA-256. Один и тот же ключ всегда получает один и тот же отпечаток, поэтому он хорошо подходит в качестве kid.
Преобразование целиком выполняется в вашем браузере; ключ не загружается, не записывается в журналы и не сохраняется, а после загрузки страница работает и без сети. И всё же обращайтесь с любым закрытым ключом осторожно и по возможности преобразуйте тестовые ключи. При публикации отметьте «Только открытый ключ», чтобы закрытые поля не попали в результат.
JWK закрытого ключа Ed448 или X448 должен содержать открытый ключ, а OpenSSL обычно записывает такие PEM-файлы без него. Его вычисление требует математики Ed448, которой в браузерах нет. Экспортируйте ключ вместе с открытой частью или преобразуйте открытый ключ отдельно.
Ставки и правила меняются; проверьте источник, прежде чем полагаться на цифру.
Всё ещё не получается? Задайте вопрос об инструменте «Конвертер JWK в PEM» и ответить может любой, кто знает. Учётная запись не нужна.