Генератор ключей RSA
Создайте новую пару ключей RSA с модулем длиной 2048 или 3072 бит и открытым показателем 65537. Вы получите закрытый ключ в незашифрованном формате PKCS #8 PEM, открытый ключ в формате SPKI PEM, соответствующую строку OpenSSH ssh-rsa с отпечатком SHA-256, алгоритмы RS и PS, которыми он подписывает, и контрольный отпечаток JWK по RFC 7638 для использования в качестве идентификатора ключа. Каждая пара создается модулем crypto в Node.js для этого запроса и нигде не сохраняется.
Часто задаваемые вопросы
Выбрать 2048 или 3072 бит?
RSA длиной 2048 бит по-прежнему является распространенным минимумом и поддерживается везде, включая библиотеки JWT, которые отклоняют более короткие ключи. 3072 бит соответствуют уровню стойкости 128 бит, рекомендованному в NIST SP 800-57 после 2030, однако подписи становятся больше, а подписание — медленнее. Ключи большего размера, например 4096 бит, недоступны, поскольку время их генерации на общем сервере непредсказуемо.
В каких форматах представлены результаты?
Закрытый ключ закодирован в PEM в формате PKCS #8 (BEGIN PRIVATE KEY), а открытый — в PEM в формате SubjectPublicKeyInfo (BEGIN PUBLIC KEY). Оба ключа поддерживаются OpenSSL, Java, .NET, Go, Node, jose и большинством других библиотек. Строка открытого ключа OpenSSH добавляется для файлов authorized_keys.
Зашифрован ли закрытый ключ?
Нет, закрытый ключ возвращается без парольной фразы, чтобы его можно было сразу вставить в другие инструменты. Чтобы защитить ключ при хранении, выполните openssl pkey -in key.pem -aes256 -out key-encrypted.pem и храните только зашифрованный файл. Не добавляйте незашифрованную копию в систему контроля версий.
Как получить формат PKCS #1 (BEGIN RSA PRIVATE KEY)?
Некоторые старые программы требуют традиционный формат PKCS #1. В OpenSSL 3 выполните openssl pkey -in key.pem -traditional -out key-rsa.pem, чтобы преобразовать файл PKCS #8. Сами ключевые данные не меняются, меняется только обрамление.
Можно ли использовать этот ключ для SSH?
Да. Добавьте строку ssh-rsa в ~/.ssh/authorized_keys на сервере и сохраните закрытый ключ PEM в файл идентификации с правами 600, поскольку OpenSSH читает ключи RSA в формате PEM. Многие серверы теперь предпочитают ключи Ed25519, которые создает Генератор ключей Ed25519.
Что такое контрольный отпечаток JWK?
Это хеш SHA-256 по RFC 7638 обязательных элементов JWK открытого ключа, закодированный в base64url. Он идентифицирует ключ независимо от его формата, поэтому подходит для использования в качестве значения kid в JWT и документах JWKS. Конвертер JWK показывает то же значение для этого ключа.
Какие алгоритмы JWT может подписывать этот ключ?
Ключ RSA может подписывать данные алгоритмами RS256, RS384 и RS512 (PKCS #1 v1.5), а также PS256, PS384 и PS512 (RSA-PSS). Используйте закрытый ключ PEM с генератором JWT, а проверяющим передайте открытый ключ PEM или его JWK. Алгоритм относится к подписи, поэтому один ключ можно использовать для нескольких алгоритмов.
Где-нибудь сохраняется сгенерированный ключ?
Нет. Пара ключей создается в памяти для вашего запроса, возвращается один раз в результате и никогда не записывается в журналы и не сохраняется. Если вы ее потеряете, создайте новую пару: восстановить старую никто не сможет.
Для чего нужен параметр комментария?
Комментарий добавляется к строке открытого ключа OpenSSH, обычно в виде user@host или метки, например deploy-2026, чтобы ключ можно было узнать в authorized_keys. Он не меняет ключ или его отпечатки. Длина комментария ограничена 200 символами, а последовательности пробельных символов заменяются одиночными пробелами.
Насколько случайны сгенерированные ключи?
Простые числа берутся из криптографически стойкого генератора случайных чисел операционной системы через OpenSSL — того же источника, который серверы используют для создания собственных ключей. Каждый запрос создает новую независимую пару ключей. Открытая экспонента всегда равна 65537 — стандартному значению.