Как добавить пароль к закрытому ключу ECC, сгенерированному openssl?

Я пытаюсь создать сертификаты на основе эллиптических кривых, используя интерфейс командной строки OpenSSL. Я генерирую файлы ключей, введя следующую команду в CLI:

openssl ecparam -name secp256k1 -genkey -noout -out rootpem.pem

Проблема в том, что хотя ключ ECC успешно сгенерирован, он не зашифрован никаким симметричным шифрованием. Однако было довольно просто зашифровать ключ RSA с помощью следующей команды:

openssl genrsa -aes128 -out 1.key 2048 

Есть ли способ зашифровать ключи ECC так же, как ключи RSA?

Я пробовал версии OpenSSL «OpenSSL 0.9.8zh 14 января 2016 г.» и «OpenSSL 1.1.0g 2 ноября 2017 г.» с комбинацией нескольких аргументов, но всегда получаю сообщение об ошибке.

PS: читая эта вики-страница, я уверен, что его можно зашифровать. Я не знаю как.

Hesam 07.04.2019 07:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
1 599
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Насколько я пытался, для него нет ни одного линейного решения. Его можно сгенерировать с помощью команды openssl ecparam to openssl ec. Одно из возможных решений таково:

openssl ecparam -genkey -name secp384r1 | openssl ec -aes-256-cbc -out rootpem.[pem/key]

Глядя на сгенерированные файлы, они имеют такие же заголовки, как вики-примеры OpenSSL. Однако я не уверен, безопасен ли этот конвейер или нет, поскольку незашифрованный ключ передается напрямую.

Или вы можете сделать это в два этапа: сначала «ecparam», затем ключ

openssl ecparam -name secp256k1 -out ecparam.pem
openssl genpkey -paramfile ecparam.pem -out key.pem -aes-128-cbc -pass pass:HereIsThePassword

Рекомендуется использовать команду genpkey. Он также может генерировать закрытые ключи на кривой Ed25519 и шифровать их с помощью AES-256 одной командой:

openssl genpkey -algorithm ed25519 -aes256 -pass stdin -out private/ca.key

Другие вопросы по теме