Я пытаюсь создать сертификаты на основе эллиптических кривых, используя интерфейс командной строки 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 г.» с комбинацией нескольких аргументов, но всегда получаю сообщение об ошибке.
Насколько я пытался, для него нет ни одного линейного решения. Его можно сгенерировать с помощью команды 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
PS: читая эта вики-страница, я уверен, что его можно зашифровать. Я не знаю как.