Конвертер JWK
Перетворюйте ключі між PEM і JSON Web Key. Вставте приватний ключ PEM у форматі PKCS #8, PKCS #1 або SEC1, відкритий ключ чи сертифікат, щоб отримати його JWK, або вставте JWK чи JWKS із кількістю ключів до 20, щоб отримати ключі PEM у форматах PKCS #8 і SPKI. Підтримуються ключі RSA, EC (P-256, P-384, P-521, secp256k1), Ed25519, Ed448, X25519 і X448; для кожного показано тип і відбиток RFC 7638.
Поширені запитання
Як конвертер визначає напрямок перетворення?
Вхідні дані, що починаються з {, розпізнаються як JWK або JWKS і перетворюються на PEM. Дані, що містять рядок -----BEGIN, розпізнаються як PEM і перетворюються на JWK. Усі інші дані відхиляються з підказкою щодо очікуваних форматів.
Які дані PEM можна вводити?
Незашифровані приватні ключі у форматах PKCS #8 (BEGIN PRIVATE KEY), PKCS #1 (BEGIN RSA PRIVATE KEY) і SEC1 (BEGIN EC PRIVATE KEY), відкриті ключі у форматах SPKI (BEGIN PUBLIC KEY) або PKCS #1 (BEGIN RSA PUBLIC KEY), а також сертифікати X.509, із яких перетворюється відкритий ключ. Якщо вставлено кілька блоків PEM, використовується перший приватний ключ; якщо його немає — перший відкритий ключ або сертифікат.
Що я отримаю для приватного ключа?
Приватний ключ PEM перетворюється на приватний JWK з усіма його членами, як-от d, p, q, dp, dq і qi для RSA, а також на відповідний відкритий JWK. Передавайте лише відкритий JWK, оскільки приватний містить секретні дані ключа.
Чи можна перетворити весь JWKS?
Так. Вставте документ із масивом keys, що містить до 20 ключів, наприклад із кінцевої точки jwks_uri, і кожен ключ буде перетворено на PEM із зазначенням його індексу та kid. Приватні JWK, які розпізнаються за членом d, повертають і приватний ключ PKCS #8, і відкритий ключ SPKI.
Чому симетричний ключ не можна перетворити?
Ключі з kty oct — це звичайні секретні байти для HMAC або AES, які не мають представлення PEM. Використовуйте їх безпосередньо, наприклад у Генераторі JWT, який приймає JWK типу oct як секрет HMAC.
Для чого потрібен параметр kid?
Якщо його ввімкнути, відбиток RFC 7638 ключа додається як член kid до згенерованого JWK. Це надає ключу сталий ідентифікатор, який засоби перевірки можуть зіставити із заголовком kid у JWT.
Що таке відбиток RFC 7638?
Це хеш SHA-256 у форматі base64url, обчислений за обов’язковими відкритими членами ключа у фіксованому порядку: наприклад, e, kty і n для RSA або crv, kty, x і y для EC. Для того самого ключа відбиток завжди однаковий, незалежно від того, чи збережено його як PEM, чи як JWK.
Чи підтримуються зашифровані ключі та ключі OpenSSH?
Ні. Спершу потрібно зняти парольну фразу із зашифрованих ключів PEM, наприклад за допомогою openssl pkey -in encrypted.pem -out key.pem. Перш ніж їх можна буде прочитати тут, приватні ключі OpenSSH потрібно перетворити на PEM за допомогою ssh-keygen.
Які типи ключів підтримуються?
RSA, EC на кривих P-256, P-384, P-521 і secp256k1, а також типи OKP Ed25519, Ed448, X25519 і X448. Ключі DSA та Diffie-Hellman не мають представлення JWK, тому відхиляються з поясненням.
Мій приватний ключ зберігається?
Ні. Ключ перетворюється в пам’яті для цього запиту, його дані ніколи не записуються в журнал і не зберігаються. Віддавайте перевагу онлайн-перетворенню відкритих ключів, а приватні ключі для робочих систем обробляйте лише на системах, які контролюєте.