Генератор ключів EC
Створюйте пару ключів на еліптичній кривій P-256, P-384 або P-521 для підписів ES256, ES384 чи ES512, ECDH і сертифікатів TLS. Результат містить незашифрований приватний ключ у форматі PKCS #8 PEM, відкритий ключ у форматі SPKI PEM, рядок відкритого ключа OpenSSH ecdsa-sha2 з його відбитком SHA-256 і відбиток JWK за RFC 7638. Кожна пара створюється щоразу заново за допомогою модуля crypto Node і ніколи не зберігається.
Поширені запитання
Яку криву вибрати?
P-256 (також відома як prime256v1 або secp256r1) — найпоширеніша крива, що забезпечує близько 128 біт стійкості. P-384 забезпечує близько 192 біт і потрібна для деяких державних профілів, зокрема CNSA. P-521 — найбільша крива NIST, яку підтримують рідше, тож вибирайте її, лише якщо цього вимагає система.
Якому алгоритму JWT відповідає кожна крива?
Ключі P-256 створюють підписи ES256, P-384 — ES384, а P-521 — ES512. JOSE пов’язує кожен алгоритм лише з однією кривою, тому Генератор JWT відхиляє ключ, створений на невідповідній кривій. У результаті вказано алгоритм, що відповідає вашому ключу.
Які формати повертаються?
Приватний ключ закодовано у форматі PEM PKCS #8 (BEGIN PRIVATE KEY), а відкритий — у форматі PEM SubjectPublicKeyInfo (BEGIN PUBLIC KEY) із зазначенням назви кривої. Також ви отримаєте рядок ecdsa-sha2-nistp256, nistp384 або nistp521, який OpenSSH очікує у файлі authorized_keys.
Як отримати формат SEC1 (BEGIN EC PRIVATE KEY)?
Деяким інструментам досі потрібне старіше кодування SEC1. В OpenSSL 3 виконайте openssl pkey -in key.pem -traditional -out key-ec.pem або openssl ec -in key.pem -out key-ec.pem. Сам ключ не зміниться.
Чи можна створити запит на підпис сертифіката за допомогою цього ключа?
Так. Збережіть приватний PEM і виконайте openssl req -new -key key.pem -subj "/CN=example.com" -out request.csr, а потім перевірте запит за допомогою Декодера CSR. Центри сертифікації приймають ключі P-256 і P-384 для сертифікатів TLS.
Чому ключі EC менші за ключі RSA?
Криптографія на еліптичних кривих забезпечує такий самий рівень безпеки з набагато коротшими ключами, тому ключ P-256 можна порівняти з ключем RSA на 3072 біт. Підписи коротші, а підписання швидше. Відкритий ключ на P-256 займає 65 байтів.
Чи захищено приватний ключ парольною фразою?
Ні, ключ повертається незашифрованим, щоб інші інструменти могли читати його безпосередньо. Зашифруйте його для зберігання за допомогою openssl pkey -in key.pem -aes256 -out key-encrypted.pem. Ніколи не додавайте незашифрований приватний ключ до репозиторію.
Для чого потрібен відбиток JWK?
Відбиток за RFC 7638 — це хеш SHA-256 у форматі base64url від полів crv, kty, x і y ключа. Це стабільний ідентифікатор ключа, який не залежить від формату PEM чи JWK і добре підходить як kid у заголовках JWT та документах JWKS.
Чи зберігається пара ключів?
Ні. Пара створюється в пам’яті для вашого запиту, повертається один раз і ніколи не записується в журнал чи не зберігається. Скопіюйте обидва ключі, перш ніж залишити сторінку, адже знову їх показати не можна.
Що змінює поле коментаря?
Воно лише додає мітку в кінці рядка відкритого ключа OpenSSH, наприклад user@laptop, щоб ключ було легко розпізнати у файлі authorized_keys. Відбитки та дані ключа залишаються незмінними. Коментар може містити до 200 символів.