Генератор ключей 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. Каждая пара создается заново с помощью криптографического модуля 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 символов.