Сгенерируйте пару ключей RSA или EC в вашем браузере с WebCrypto и экспортируйте открытый и закрытый ключи как PEM или JWK. Ключи никогда не покидают ваше устройство.
Ключи генерируются локально в вашем браузере — закрытый ключ никогда не загружается.
— результат появится здесь —
— результат появится здесь —
Об этом инструменте
Генератор пар ключей RSA / EC создаёт асимметричную пару ключей полностью в вашем браузере, используя нативный API WebCrypto (crypto.subtle.generateKey), затем экспортирует её в форматах, которые вы фактически вставляете в конфигурационные файлы и код. Ничего не передаётся и не хранится на сервере: закрытый ключ генерируется на вашем устройстве, показывается один раз и отбрасывается, когда вы покидаете страницу. Это делает его безопасным способом создавать ключи для инструментов рядом с SSH, подписания JWT, экспериментов с TLS или изучения того, как форматы открытых ключей сочетаются вместе.
Для RSA вы выбираете длину модуля 2048, 3072 или 4096 бит со стандартной открытой экспонентой 65537 и то, для чего ключ — для подписания (RSASSA-PKCS1-v1_5, SHA-256) или шифрования (RSA-OAEP, SHA-256). Для ключей на эллиптических кривых вы выбираете кривую NIST — P-256, P-384 или P-521 — и то, для чего она — для подписания (ECDSA) или согласования ключей (ECDH). Большие модули RSA и более высокие кривые сильнее, но медленнее генерируются; RSA-4096 в частности может занять несколько секунд в браузере.
Экспорт делается с помощью exportKey WebCrypto: открытый ключ как SubjectPublicKeyInfo (SPKI), а закрытый ключ как PKCS#8, закодированные в base64 и обёрнутые по 64 символа в строке внутри рамок -----BEGIN PUBLIC KEY----- / -----BEGIN PRIVATE KEY-----. Переключите переключатель формата на JWK, чтобы вместо этого получить представление JSON Web Key. Поскольку генерация локальна и офлайн, закрытый ключ никогда не загружается — скопируйте его в безопасное место перед закрытием вкладки, так как впоследствии его нельзя восстановить.
Часто задаваемые вопросы
Отправляются ли закрытые ключи на сервер?
Нет. Ключи генерируются локально движком WebCrypto вашего браузера и экспортируются на странице. Закрытый ключ никогда не покидает ваше устройство и нигде не хранится, поэтому скопируйте его в безопасное место перед закрытием вкладки — впоследствии его нельзя восстановить.
Какой размер ключа или кривую выбрать?
RSA-2048 — распространённая базовая линия; 3072 или 4096 дают больше запаса ценой более медленной генерации и больших ключей. Для EC P-256 быстра и широко поддерживается, тогда как P-384 и P-521 предлагают более высокие уровни безопасности. Ключи EC намного меньше, чем RSA, при сопоставимой стойкости.
В чём разница между выводом PEM и JWK?
PEM — это формат base64 DER, обёрнутый в строки BEGIN/END, который ожидают большинство серверов и OpenSSL — SPKI для открытого ключа и PKCS#8 для закрытого. JWK — это объект JSON Web Key, используемый библиотеками JavaScript и JOSE/JWT. Оба описывают одну и ту же пару ключей.
Подписание против шифрования — что меняется?
Это выбирает алгоритм, для которого создаётся ключ. Подписание RSA использует RSASSA-PKCS1-v1_5, а шифрование — RSA-OAEP; подписание EC использует ECDSA, а согласование ключей — ECDH. Ключ, сгенерированный для одной цели, привязан к этому алгоритму, поэтому выбирайте на основе того, как вы будете его использовать.