Удалить пустую фразу-пароль из ssl-ключа, используя openssl

У меня есть файл ключа 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.

3 ответа

Решение

Я нашел обходной путь, используя инструмент 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

Мое предложение: в следующий раз не используйте пустую фразу-пароль:-)

Вот как я обошел эту проблему..

  1. Добавьте новую секретную фразу в закрытый ключ, который был изначально создан без ключевой фразы.

    openssl rsa -des3 -in your.key -out your.encrypted.key
    mv your.encrypted.key your.key
    

Это предложит вам ввести новую фразу-пароль.

  1. Теперь удалите фразу-пароль следующим образом:

    openssl rsa -in your.key -out your.key_NO_PASSPHRASE.pem
    
  2. Это предложит вам ввести ключевую фразу, указанную в шаге 1. выше, а затем удалит ее из ключа.

Это сработало для меня, и Apache запустился без каких-либо ошибок. (Я предполагаю, что именно поэтому вам нужно было удалить его в первую очередь:))

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