remove a frase secreta vazia da chave ssl usando openssl

4

Eu tenho um arquivo de chave openssl criptografado com uma frase secreta vazia. Estou tentando remover a frase secreta usando este comando

openssl rsa -in ca.key -out ca.key.clear

Eu, então, tento digitar a frase secreta vazia quando ela pede a senha atual, mas recebo este erro:

140592616367776:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:You must type in 4 to 8191 characters

Parece que não consigo remover uma senha se ela tiver menos de 4 caracteres.

Como eu removo a senha, de preferência usando o openssl.

    
por Matthew Sharp 07.07.2015 / 09:37

3 respostas

2

Eu criei uma solução alternativa usando a ferramenta 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

Não é bonito, mas funcionou. Eu ainda não sei como conseguir isso usando o openssl.

    
por 08.07.2015 / 02:26
2

É verdade que você não pode obter PEM_bytes_read_bio e PEM_do_header , que é onde as decodificações PEM legadas acabam, para usar uma senha de tamanho zero, de qualquer forma.

Existe uma solução alternativa, mas você pode não gostar :

# 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

Minha sugestão: da próxima vez, não use uma frase secreta vazia: -)

    
por 09.07.2015 / 18:55
1

Veja como eu contornei esse problema ...

  1. Adicione uma nova senha à chave privada que foi criada originalmente sem uma frase secreta.

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

Isso solicitará que você insira uma nova frase secreta.

  1. Agora remova a frase secreta da seguinte forma:

    openssl rsa -in your.key -out your.key_NO_PASSPHRASE.pem
    
  2. Isso solicitará que você insira a frase secreta especificada na Etapa 1. acima e, em seguida, a removerá da Chave.

Isso funcionou para mim e o Apache começou sem erros. (Eu estou supondo que é por isso que você precisava para removê-lo em primeiro lugar :))

    
por 29.02.2016 / 10:06