OpenSSL 1.0.1e bug de uso?

1

Ambiente

$ cat /etc/*-release
CentOS release 6.5 (Final)

$ openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

Isso funciona

$ tr -dc A-Za-z0-9 </dev/random | head -c 24 > ${f_host_passphrase}
$ echo -e "\n" >> ${f_host_passphrase}

$ openssl genpkey ... -pass file:${f_host_passphrase} -out ${f_host_key}

$ openssl req ... -key ${f_host_key} -passin file:${f_host_passphrase} \
    -out ${f_host_req}

$ openssl ca ... -in ${f_host_req} -out ${f_host_cert}

$ openssl pkcs12 \
  -export \
  -inkey ${f_host_key} \
  -passin pass:$(cat ${f_host_passphrase}) \
  -in ${f_host_cert} \
  -name "${l_ds_cert_name}" \
  -password file:${f_host_passphrase} \
  -out ${f_host_p12}

...

$ pk12util -i ${f_host_p12} \
  -w ${f_host_passphrase} \
  -d ${l_sql_prefix}${d_nssdb} \
  -k ${f_host_passphrase}

pk12util: PKCS12 IMPORT SUCCESSFUL

O script completo e funcional é aqui . Eu escrevi o script para testes rápidos porque, acontece que essa próxima variação falha.

Isso falha

$ tr -dc A-Za-z0-9 </dev/random | head -c 24 > ${f_host_passphrase}
$ echo -e "\n" >> ${f_host_passphrase}

$ openssl genpkey ... -pass file:${f_host_passphrase} -out ${f_host_key}

$ openssl req ... -key ${f_host_key} -passin file:${f_host_passphrase} \
    -out ${f_host_req}

$ openssl ca ... -in ${f_host_req} -out ${f_host_cert}

$ openssl pkcs12 \
  -export \
  -inkey ${f_host_key} \
  -passin file:${f_host_passphrase} \
  -in ${f_host_cert} \
  -name "${l_ds_cert_name}" \
  -password file:${f_host_passphrase} \
  -out ${f_host_p12}

...

$ pk12util -i ${f_host_p12} \
  -w ${f_host_passphrase} \
  -d ${l_sql_prefix}${d_nssdb} \
  -k ${f_host_passphrase}

pk12util: PKCS12 decode not verified: SEC_ERROR_BAD_PASSWORD: The security password entered is incorrect.

Por quê?

A única diferença entre as duas variações (e o comando "failed" openssl pkcs12 é um bloco de comentário no script ao qual eu me vinculei) é como eu passo o arquivo de senha para o comando openssl pkcs12 .

Se eu enviar a senha como -passin pass:$(cat ${f_host_passphrase}) , o seguinte comando pk12util será bem-sucedido.

Se eu enviar a senha como -passin file:${f_host_passphrase} , o comando openssl pkcs12 ainda será bem-sucedido, mas o comando pk12util falhará.

Meu palpite é que o comando openssl pkcs12 está analisando algo como a senha do argumento -passin file:${f_host_passphrase} . Apenas não o que o resto do mundo está esperando para usar ...

    
por dafydd 22.10.2014 / 07:07

0 respostas

Tags