У меня есть файл ключа openssl, зашифрованный пустой кодовой фразой. Я пытаюсь удалить кодовую фразу с помощью этой команды
openssl rsa -in ca.key -out ca.key.clear
Затем я пытаюсь ввести пустую кодовую фразу, когда она запрашивает текущую кодовую фразу, но получаю такую ошибку:
140592616367776: ошибка: 28069065: lib (40): UI_set_result: слишком маленький результат: ui_lib.c: 869: необходимо ввести от 4 до 8191 символов
Кажется, я не могу удалить кодовую фразу, если она меньше 4 символов.
Как удалить парольную фразу, в идеале используя openssl.
Я придумал обходной путь, используя etcd-ca инструмент.
mkdir .etcd-ca
mv ca.key .etcd-ca/ca.host.key
touch .etcd-ca/ca.host.crt
chmod a-w .etcd-ca/ca.host.crt
etcd-ca export --insecure ca > ca.tar
tar xf ca.tar
Это некрасиво, но сработало. Я до сих пор не знаю, как добиться этого с помощью openssl.
Это правда, ты не можешь получить PEM_bytes_read_bio
и PEM_do_header
, где и заканчиваются расшифровки устаревшего PEM, чтобы взять парольную фразу нулевой длины, но как бы то ни было.
Есть обходной путь, но тебе это может не понравиться:
# assumes DES3 (aka DES-EDE3) CBC as in the example
# changes and/or additional logic needed for other ciphers
# get the IV from the file header
iv=`awk <silly -F, '/DEK-Info:/{print $2}'`
# use enc to do EVP_BytesToKey with salt=IV and just print result
key=`openssl enc -des3 -k '' -S $iv -P |awk -F= '/^key/{print $2}'`
# get body of the file, debase64 and decrypt
# note openssl silently drops dash-END line, another debase64 may not
<silly sed '1,/^$/d' |openssl base64 -d |openssl enc -des3 -d -K $key -iv $iv >sillyd
# sillyd is now unencrypted DER "legacy" (PKCS#1)
# and can be read by "openssl rsa <sillyd -inform der"
# but since we're on a roll let's do PEM too!
(echo -----BEGIN RSA PRIVATE KEY-----;openssl base64 <sillyd;\
echo -----END RSA PRIVATE KEY-----) >sillyp
Мое предложение: в следующий раз не используйте пустую кодовую фразу :-)
Вот как я решил эту проблему ..
Добавьте новую парольную фразу к закрытому ключу, который изначально был создан без парольной фразы.
openssl rsa -des3 -in your.key -out your.encrypted.key
mv your.encrypted.key your.key
Вам будет предложено ввести новую кодовую фразу.
Теперь удалите кодовую фразу следующим образом:
openssl rsa -in your.key -out your.key_NO_PASSPHRASE.pem
Вам будет предложено ввести парольную фразу, указанную в шаге 1 выше, а затем она будет удалена из ключа.
У меня это сработало, и Apache запустился без ошибок. (Я предполагаю, что вам нужно было удалить его в первую очередь :))